0

我正在使用 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 小于 30ms 时效果很好。但是,如果我使用 linux 的 tcp 命令将 RTT 增加到 100ms tc,那么我只能获得一半质量的视频。当 RTT 为 100 毫秒时,基于 UDP 的 RTSP 仍然可以正常工作。由于我在本地运行它,因此网络流量无关紧要,因为我可以使用 iperf 确认,即使 rtt 为 100 毫秒,吞吐量也可以达到最大值。所以我想知道这是什么原因造成的?

4

1 回答 1

0

看了一圈,原来是缓冲问题。OpenRTSP 默认使用 50K 缓冲区,当 RTT 很大时它会不足。因此,我在liveMedia/GenericMediaServer.cpp中的 increaseSendBufferTo() 方法调用中增加了缓冲区大小,这有助于解决问题。

于 2017-01-15T03:50:22.363 回答