2013-05-20 18 views
16

Mam problem. Chciałbym zrobić transmisję na żywo z ffmpeg z mojej kamery internetowej.Jak zminimalizować opóźnienie w transmisji na żywo za pomocą ffmpeg

  1. Uruchamiam serwer FTP i działa.
  2. Z innego terminalu ja uruchomić ffmpeg do strumienia z tego polecenia i to działa:

    sudo ffmpeg -re -f video4linux2 -i /dev/video0 -fflags nobuffer -an http://localhost:8090/feed1.ffm 
    
  3. W moim pliku konfiguracyjnego mam ten strumień:

    <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. ja uruchomić strumień z

    ffplay http: // 192.168.1.2: 8090/test.webm Działa, ale mam opóźnienie 4 sekund i chciałbym zminimalizować to opóźnienie, ponieważ jest to istotne dla mojej aplikacji. Dzięki

+2

Można spróbować zmniejszyć wartość probesize: 'ffplay -probesize 500000 http: //192.168.1.2: 8090/test.webm' (do 500 Kb, eksperymentuj z tą wartością, domyślną wartością jest 5 Mb, jeśli się nie mylę.) – pogorskiy

+0

ok dzięki. Teraz muszę oglądać strumień w przeglądarce mobilnej, więc nie mogę użyć ffplay. Potrzebuję sugestii, aby zoptymalizować plik konfiguracyjny. –

+2

Czytanie http://ffmpeg.org/sample.html Mogę sobie wyobrazić, że możesz spróbować z VideoBufferSize lub zmniejszając GOP (zwiększa to wykorzystanie przepustowości). –

Odpowiedz

13

guide strumieniowe FFmpeg zawiera specjalną sekcję, w jaki sposób zmniejszyć latencję. Nie próbowałem jeszcze wszystkich ich sugestii. http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide#Latency

Robią szczególną notatkę o opóźnieniach ffplay wprowadza:

Domyślnie ffplay wprowadza małą latencję własnych, także przydatny jest mplayer z jego -nocache do testowania latencji (lub -benchmark). Korzystanie z SDL zewnątrz jest również, aby wyświetlić ramki z minimalnymi opóźnieniami: ffmpeg ... -f sdl -

+4

dzięki, 'ffplay -pospełniać 32 -sync ext INPUT' z linka zrobiła dla mnie sztuczkę! – user3473830

+0

Jakie opóźnienie osiągnąłeś? Potrzebuję opóźnienia strumieniowania wynoszącego ponad 100 ms. Czy to możliwe ? –

+0

Nie zmierzyłem ostatecznego opóźnienia, ale wydawało mi się, że jestem blisko monitora osobiście z dźwiękiem przechodzącym przez budkę dźwiękową, więc było to dla mnie wystarczająco dobre. –

Powiązane problemy