我目前有一个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
Run Code Online (Sandbox Code Playgroud)
Quicktime 7似乎没有问题绑定到SDP中的目标端口并播放流但是在尝试使用VLC时我看到以下ICMP数据包:
286674 2925.162140000 10.0.1.150 10.0.1.25 ICMP 70 Destination unreachable (Port unreachable)
Run Code Online (Sandbox Code Playgroud)
我的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==;
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能让流在VLC中播放?我在启动VLC时尝试使用参数'--rtp-client-port = 51326',但它似乎没有什么区别.
更新1
看来VLC(至少我正在使用它的方式)不使用您在SDP中指定的客户端端口,它总是分配它自己的端口,它期望RTP数据包被传递.我改变了我的方法,允许我从VLC捕获端口并使用该端口作为目标启动我的RTP源并且它起作用.这不是一个理想的解决方案.
有没有人知道如何让VLC使用SDP文件中的目标端口?