Как уменьшить задержку при потоковой передаче видео FFmpeg?

2540
dempap

В приложении потокового видео между сервером Linux (FFmpeg) и клиентом Windows (проигрыватель VLC) заметная задержка составляет около 10 секунд.

Команда FFmpeg:

ffmpeg -re -f v4l2 -i /dev/video0 http://192.168.1.101:8090/feed1.ffm 

VLC плеер:

http://192.168.1.101:8090/test.swf 

Несмотря на то, что и сервер, и клиент запускаются вместе, проигрыватель VLC задерживает около 10 секунд для воспроизведения потока, воспроизводя его с первого кадра, захваченного сервером. По этой причине задержка составляет 10 секунд.

Я пытаюсь выяснить, что вызывает эту задержку:

  1. Моя первая мысль, что кодек задерживается с кодированием. В этом случае, какой кодек я должен включить в мой файл конфигурации ffserver? Я экспериментировал со многими видеокодеками (rawvideo, flv, mjpeg), но с тем же результатом.

  2. Во-вторых, есть ли параметр, который я мог бы включить в свою команду ffmpeg для управления задержкой?

  3. С другой стороны, может ли эта задержка возникнуть из-за плеера VLC?

Я понимаю, что этот вопрос носит общий характер. Тем не менее, любая помощь, если вы столкнулись с подобной проблемой, будет принята с благодарностью.

Файл конфигурации FFserver:

Port 8090 BindAddress 0.0.0.0 MaxClients 10 MaxBandwidth 40000   <Feed feed1.ffm> File /tmp/feed1.ffm FileMaxSize 500M ACL allow localhost ACL allow 127.0.0.1 ACL allow 192.168.0.0 192.168.255.255 </Feed>  <Stream test.swf> Feed feed1.ffm Format swf VideoCodec flv VideoSize 640x480 VideoFrameRate 30 VideoBitRate 400   AVOptionVideo flags +global_header AVOptionVideo cpu-used 0 AVOptionVideo qmin 10 AVOptionVideo qmax 42  PreRoll 5 StartSendOnKey NoAudio </Stream> 
3
https://trac.ffmpeg.org/wiki/StreamingGuide#Latency может быть полезным для вас rogerdpack 5 лет назад 0

1 ответ на вопрос

1
binaryCode

Add the option ffmpeg with -tune zerolatency and best option using x265 codec, reduce VideoSize 640x480 to VideoSize 320x240.

Lastly, change your player from vlc to ffplay

Похожие вопросы