我目前有一个Android应用程序,它从摄像头捕获视频并通过RTP进行流式传输。我不使用RTSP。
我创建了一个描述RTP源的SDP文件。我可以在Quicktime 7中打开SDP文件并且可以看到流,尝试在VLC中打开SDP文件不起作用。我收到以下错误:
live555 demux错误:10s内没有收到数据,正在中止
我正在使用Wireshark监控RTP数据包,并且可以看到网络上的数据包(参见下面的示例):
281956 2545.589171000 10.0.1.25 10.0.1.150 UDP 1442 Source port: 54405 Destination port: 51372
Quicktime 7似乎没有问题绑定到SDP中的目标端口并播放流但是在尝试使用VLC时我看到以下ICMP数据包:
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 :(得分:4)
VLC将以下参数(51372)中提到的端口作为目标端口。
m =视频51372 RTP / AVP 96
我已尝试使用音频捕捉。
您应该只需要在没有任何参数的情况下使用此SDP配置播放该sdp文件。