通过vlc搭建rtsp流媒体服务器,vlc支持RTSP over TCP的方式,数据流传输时只支持RTP over UDP。而DarwinStreamingServer(简称dss)服务器能自适应客户端发起的数据传输请求是用TCP方式,还是用UDP方式,如果是UDP方式,交互命令是RTSP over TCP,数据传输是RTP over UDP,如果是TCP方式,交互命令是RTSP over TCP,数据传输是RTP over TCP。
一、dss服务器,vlc客户端播放视频。
通过命令参数指定TCP或udp传输媒体数据。
1:TCP传输媒体数据
在vlc的命令行参数里面加入以下选项即可:
--rtsp-tcp
即用TCP方式访问服务器应该用如下命令:
vlc rtsp://192.168.1.198/test --rtsp-tcp
这是其中的一个RTP数据包:
我们可以看到,通过这种方式的RTP数据包是基于TCP实现的。因为dds服务默认端口是80,所以上面地址不用输入端口。如果不是默认端口,就需要指定端口。比如:vlc rtsp://192.168.1.198:8554/test --rtsp-tcp
2:UDP传输媒体数据
虽然在和DSS的交互中vlc默认是用UDP进行媒体数据的传输的,但我们也要考虑如果换成其它流媒体服务的情况,所以可以加上如下参数进行限制:
--no-rtsp-tcp
即用UDP方式访问服务器应该用如下命令:
vlc rtsp://192.168.1.198 /test --no-rtsp-tcp
二、vlc服务器,vlc客户端播放视频。
通过命令参数指定TCP或udp传输媒体数据。
无论是vlc rtsp://192.168.1.198:8554/test --rtsp-tcp 或 rtsp://192.168.1.198:8554/test --rtsp-tcp命令,vlc服务器实际上走的是RTSP over TCP的方式,数据流传输时只支持RTP over UDP。