我正在使用live555通过TCP使用RTSP从点播RTSP服务器流式传输H264视频,如下所示:
./openRTSP -F tcp-test -Q -d 60 -b 500000 -4 -P 62 -w 3840 -h 2160 -f 30 rtsp://ip-address:8554/h264ESVideoTest
当 RTT 小于 30 毫秒时,它运行良好。但是,如果我使用 linux 的 tcp tc
命令将 RTT 增加到 100ms,那么我只能获得半质量的视频。当 RTT 为 100ms 时,基于 UDP 的 RTSP 仍然可以正常工作。由于我在本地运行它,因此网络流量无关紧要,因为我可以使用 iperf 确认即使 rtt 为 100 毫秒,吞吐量也可以达到最大值。所以我想知道是什么原因造成的?
环顾四周后,结果发现这是缓冲问题。OpenRTSP默认使用50K缓冲区,当RTT很大时,这不足。因此,我在liveMedia/GenericMediaServer中的increaseSendBufferTo()方法调用中增加了缓冲区大小.cpp这有助于解决问题。