2011-03-28 90 views
0

我正在使用Android應用程序從使用DSS的服務器播放rtsp流。 它大部分時間都在工作,但有時我無法工作。我使用wireshark進行了測試,發現UDP請求一直在發送,但沒有得到任何響應,原因可能是防火牆阻塞了UDP數據包。當我使用VLC打開相同的RTSP流時,我得到使用TCP的RTP響應。Android:使用TCP從Darwin流服務器(DSS)接收流

現在因爲我無法更改防火牆狀態,我想更改我的應用程序以使用TCP接收RTSP流,我認爲使用內置MediaPlayer/VideoView是不可能的。那我怎麼能這樣做呢?

有什麼建議嗎?

在此先感謝。

博爾頓

回答

0

如果內置的媒體播放器不支持它,那麼你需要實現自己的RTSP客戶端,並在RTSP設置請求,您需要指定TCP作爲傳輸。

標準RTSP建立:

音軌1:

SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track1 RTSP/1.0 
CSeq: 3 
Transport: RTP/AVP;unicast;client_port=4116-4117 
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09) 

磁軌2:

SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track2 RTSP/1.0 
CSeq: 4 
Transport: RTP/AVP;unicast;client_port=4118-4119 
Session: 6B8B4567 
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09) 

RTSP設置用於交織到RTSP/TCP:

茶CK1:

SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track1 RTSP/1.0 
CSeq: 3 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09) 

磁軌2:

SETUP rtsp://146.64.28.137/TheItCrowd.mm1/track2 RTSP/1.0 
CSeq: 4 
Transport: RTP/AVP/TCP;unicast;interleaved=2-3 
Session: 35B9387A 
User-Agent: openRtsp (LIVE555 Streaming Media v2010.04.09) 
+0

感謝你的幫助拉爾夫,但我不是很熟悉RTSP的問題,你能告訴我一些關於它的更詳細的建議,像教程或我可以從中學習的現有庫:P – Bolton 2011-03-28 10:12:23

+0

RTSP是會話控制協議(如SIP),用於設置流會話。它類似於HTTP,因爲它是基於文本的協議。閱讀RTSP的最佳地點是RFC:http://tools.ietf.org/html/rfc2326。至於現有的庫,有一個很好的C++(http://www.live555.com),但就JAVA而言,我不知道。 live555包含一個名爲openRTSP的RTSP客戶端應用程序。您可以使用它連接到您的DSS服務器,並使用wireshark等軟件嗅探RTSP流量。這將幫助你瞭解交換 – Ralf 2011-03-28 10:30:47

+0

謝謝拉爾夫,它確實有幫助。我會看看:) – Bolton 2011-03-29 06:31:22