2013-02-10 230 views
5

我目前有一個Android應用程序,可以捕獲攝像頭中的視頻並通過RTP流式傳輸。我不使用RTSP。使用VLC播放RTP

我已經創建了一個描述RTP源的SDP文件。我可以在Quicktime 7中打開SDP文件並可以看到流,試圖打開VLC中的SDP文件不起作用。我收到以下錯誤:

live555 demux error: no data received in 10s, aborting

我監視使用Wireshark的RTP包,可以看到網絡上的數據包(見下面的例子):

281956 2545.589171000 10.0.1.25 10.0.1.150 UDP 1442 Source port: 54405 Destination port: 51372 

的QuickTime 7似乎沒有有問題結合SDP中的目標端口和播放流,但我看到下面的ICMP數據包試圖使用VLC時:

286674 2925.162140000 10.0.1.150 10.0.1.25 ICMP 70 Destination unreachable (Port unreachable) 

我的SDP文件包含:

v=0 
o=- 1360349812962 1360349812962 IN IP4 10.0.1.25 
s=Unnamed 
i=N/A 
c=IN IP4 10.0.1.150 
t=0 0 
a=recvonly 
m=video 51372 RTP/AVP 96 
b=RR:0 
a=rtpmap:96 H264/90000 
a=fmtp:96 packetization-mode=1;profile-level-id=42c01e;sprop-parameter sets=Z0LAHukBQHsg,aM4G4g==; 

我需要做些什麼才能讓流在VLC中播放?我已經嘗試在啓動VLC時使用參數'--rtp-client-port = 51326',但它似乎沒有什麼區別。

更新1

看來,VLC(至少我使用它的方式)不使用您在SDP指定客戶端端口,它總是分配給它自己的端口,它期待着RTP要發送的數據包。我改變了我的方法,允許我從VLC捕獲端口,並使用該端口作爲目標來啓動我的RTP源,並且它工作正常。這不是一個理想的解決方案。

是否有人知道如何讓VLC使用SDP文件中的目標端口?

+0

你如何在目標機器上啓動VLC?這是一個適合我的例子。 http://stackoverflow.com/questions/20538698/minimum-sdp-for-making-a-h264-rtp-stream – TheMeaningfulEngineer 2013-12-18 07:59:18

+0

運行VLC時你有快速打開嗎?這可能是因爲兩者都試圖在同一個端口上打開一個套接字。 – Saibal 2014-03-02 14:44:00

回答

3

VLC將以下參數(51372)中提到的端口作爲目標端口。

m=video 51372 RTP/AVP 96

我嘗試過使用音頻捕獲。

你應該只需要在沒有任何參數的情況下播放這個SDP文件就可以使用這個SDP配置。

+0

不幸的是,這不適合我。 VLC忽略了SDP中的端口。我想知道在我正在運行的VLC版本中是否存在錯誤。 – lucasweb 2013-02-13 20:34:31

+0

@lucasweb:Ohk。僅供參考 - 我已經在2.0.2和2.0.5上進行了測試。你有沒有嘗試從一個VLC發送RTP音頻到另一個VLC? (使用SDP文件)。我在使用VLC服務器客戶端模式進行流媒體時遇到了一些問題。如果你已經嘗試過,如果我能從你的經驗中學習,那將是非常棒的。 – vinaygarg 2013-02-15 17:47:54