3

В приложении потокового видео между сервером 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>

1 ответ1

1

Добавьте опцию ffmpeg с -tune zerolatency и лучшим вариантом с использованием кодека x265, уменьшите VideoSize 640x480 до VideoSize 320x240.

Наконец, измените ваш плеер с vlc на ffplay

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .