2013-02-10 223 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