2009-07-29 71 views
7

我正在Android中編寫RTSP客戶端。我能夠接收響應的所有請求 即Android中的RTSP客戶端

  1. 形容它發回200 OK
  2. 設置與運輸:RTP/AVP:單播:CLIENT_PORT = 4568:4569得到了200 OK消息回到
  3. 發送播放,並得到了確定消息

之後如何獲得音頻和視頻幀?

我已經在博客上搜索過,但都說在client_port上聽,但我沒有收到任何數據包。

請讓我知道我是否正確地做。

回答

5

您可能會也可能不知道這一點,但Android已經使用VideoView構建了對RTSP的支持。

http://developer.android.com/reference/android/widget/VideoView.html

這可能會減少你的開發時間......或者,如果你想推出自己的RTSP堆棧可能完全無用。

+0

它不適用於設備和仿真器。它在PLAYER_INIT和PVMFFailure中失敗。 – Vinay 2009-07-30 14:53:36

+1

我發現它不適用於模擬器,而是在我掌握的所有設備上工作。其中一些要求您在清單中設置了喚醒鎖定權限(如圖所示) – haseman 2009-12-07 17:38:34

3

RTSP僅用於啓動流式傳輸。它爲您提供了真實流的SDP描述。您必須管理每個通道的RTCP連接和RTP連接(音頻/視頻)。要使用的端口是「client_port」端口。

從頭開始編寫RTSP/RTCP/RTP堆棧非常複雜。你可以看看在C++中實現這種堆棧的live555庫。

1

在網絡上放置一個嗅探器,您應該看到目標端口爲4568的UDP數據包針對您的IP地址。

有了一個體面的嗅探器,你將能夠看到rtsp對話框。也許你錯過了某些答案

你還應該檢查SETUP響應的內容,看看你請求的端口是否被接受。

檢查事項:

  • 聽力UDP。
  • 防火牆規則。
  • 播放請求的範圍:不要指定任何以確保服務器將播放的東西。

如果你是一個路由器或防火牆的後面,你可能不會得到任何東西,因爲你的路由器/防火牆不知道如何處理傳入的UDP數據包

1

首先嚐試用本地達爾文流做服務器安裝在你的局域網內。防火牆不會有問題。流量將起作用。

如果你想從外部服務器然後嘗試:

1)檢查在服務器響應中提到的client_ports,一些服務器建議從一個不同的端口requested.you必須使用由服務器所建議的端口。2)如果端口是正確的,那麼你可以從每個UDP端口向服務器發送64byte的空包(稱爲「開門器」)。

3)如果以上兩者不能解決問題,請檢查服務器端日誌。服務器可能正在關閉UDP端口。