2013-05-20 2 views
16

У меня проблема. Я бы сделал прямую трансляцию с ffmpeg с моей веб-камеры.Как свести к минимуму задержку в потоковой передаче с помощью 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 секунды, и я бы свести к минимуму эту задержку, потому что это важно для моего приложения. Благодаря

+2

Вы можете попытаться уменьшить значение probesize: 'ffplay -probesize 500000 Http: //192.168.1.2: 8090/test.webm' (до 500 Кб, эксперимент с этим значением, значение по умолчанию - 5 Мб, если я не ошибаюсь.) – pogorskiy

+0

ОК спасибо. Теперь я должен смотреть поток в мобильном браузере, поэтому я не могу использовать ffplay. Мне нужно некоторое предложить оптимизировать конфигурационный файл. –

+2

Чтение http://ffmpeg.org/sample.html Я могу представить, что вы можете попробовать с VideoBufferSize или уменьшить GOP (это увеличивает использование полосы пропускания). –

ответ

13

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

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

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

+4

спасибо, 'ffplay -probesize 32 -sync ext INPUT' из ссылки сделал трюк для меня! – user3473830

+0

Какую задержку вы достигли? Мне нужно более 100 мс потоковой задержки. Является ли это возможным ? –

+0

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