Почему RTSP через TCP не работает хорошо, когда RTT большой

Я использую live555 для потоковой передачи видео H264 с сервера RTSP по требованию, используя RTSP через TCP, следующим образом:

./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 мс. Однако, если я увеличу RTT до 100 мс, используя tcp Linux tc команда, тогда я могу получить только половину качества видео. RTSP через UDP все еще работает нормально, когда RTT составляет 100 мс. Так как я запускаю это локально, не имеет значения сетевой трафик, так как я могу подтвердить с помощью iperf, что пропускная способность может возрасти до максимума, даже если rtt составляет 100 мс. Так что мне интересно, что вызывает это?

1 ответ

Посмотрев немного, это оказалось проблемой буферизации. OpenRTSP по умолчанию использует буфер размером 50 Кбайт, который не хватает при большом RTT. Таким образом, я увеличил размер буфера при вызове метода incrementSendBufferTo () в liveMedia/GenericMediaServer.cpp, что помогло решить проблему.

Другие вопросы по тегам