Как свести к минимуму задержки в прямой трансляции с FFmpeg

голоса
17

у меня проблема. Я хотел бы сделать прямую трансляцию с FFmpeg с веб-камеры.

  1. Я запускаю ffserver и она работает.
  2. С другого терминала запускает FFmpeg для потоковой передачи с помощью этой команды, и она работает:

    sudo ffmpeg -re -f video4linux2 -i /dev/video0 -fflags nobuffer -an http://localhost:8090/feed1.ffm
    
  3. В моем файле конфигурации у меня есть этот поток:

    <Stream test.webm>
    Feed feed1.ffm
    Format webm
     NoAudio
     VideoCodec libvpx
     VideoSize 720x576
     VideoFrameRate 25
     # Video settings
        VideoCodec libvpx
        VideoSize 720x576           # Video resolution
        VideoFrameRate 25           # Video FPS
        AVOptionVideo flags +global_header  # Parameters passed to encoder 
                                        # (same as ffmpeg command-line parameters)
        AVOptionVideo cpu-used 0
        AVOptionVideo qmin 10
        AVOptionVideo qmax 42
        #AVOptionVideo quality good
        PreRoll 5
         StartSendOnKey
        VideoBitRate 400            # Video bitrate
     </Stream>
    
  4. Я запускаю поток с

    ffplay HTTP: // 192.168.1.2 : 8090 / test.webm Это работает , но у меня задержка 4 секунды , и я бы свести к минимуму эту задержку , потому что имеет важное значение для моего приложения. благодаря

Задан 20/05/2013 в 22:41
источник пользователем
На других языках...                            


2 ответов

голоса
13

Потоковое руководство FFmpeg имеет специальный раздел о том , как сократить время задержки. Я не пробовал , все свои предложения еще. http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide#Latency

Они делают особую отметку о времени ожидания ffplay представляет:

По умолчанию, ffplayвводит небольшую задержку самостоятельно, также полезно mplayerс его -nocacheдля тестирования латентности (или -benchmark). Использование SDL из также сказал , чтобы посмотреть кадры с минимальной задержкой:ffmpeg ... -f sdl -

Ответил 09/07/2013 в 03:47
источник пользователем

голоса
1

Вы можете попробовать эту команду

ffplay  -probesize 32 -sync ext -rtsp_transport tcp rtsp://<host>:<port>

или

ffplay -fflags nobuffer -rtsp_transport tcp rtsp://<host>:<port>

-rtsp_transportМогут быть настройки, udpили в tcpсоответствии с вашим потокового видео. Для этого примера я использую tcp.

Ответил 14/03/2018 в 08:47
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more