2013-05-20 6 views
16

Ich habe ein Problem. Ich würde ein Live-Streaming mit ffmpeg von meiner Webcam machen.Wie minimiert man die Verzögerung in einem Live-Streaming mit ffmpeg

  1. Ich starte den ffserver und es funktioniert.
  2. von einem anderen Terminal I ffmpeg starten mit diesem Befehl und es funktioniert zu streamen:

    sudo ffmpeg -re -f video4linux2 -i /dev/video0 -fflags nobuffer -an http://localhost:8090/feed1.ffm 
    
  3. In meiner Konfigurationsdatei habe ich diesen Strom:

    <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. Ich starte den Strom mit

    ffplay http: // 192.168.1.2: 8090/test.webm Es funktioniert, aber ich habe eine Verzögerung von 4 Sekunden und ich würde diese Verzögerung minimieren, weil es für meine Anwendung unerlässlich ist. Dank

+2

Sie können versuchen, den Wert probe zu reduzieren: 'ffplay 500000 http -probesize: //192.168.1.2: 8090/test.webm' (bis 500 Kb, experimentiere mit diesem Wert, der Standardwert ist 5 Mb, wenn ich mich nicht irre.) – pogorskiy

+0

ok danke. Jetzt muss ich den Stream in einem mobilen Browser anschauen und kann daher ffplay nicht verwenden. Ich brauche etwas vorschlagen, um die Konfigurationsdatei zu optimieren. –

+2

Lesen http://ffmpeg.org/sample.html Ich kann mir vorstellen, dass Sie mit VideoBufferSize versuchen oder die GOP reduzieren können (es erhöht die Bandbreitennutzung). –

Antwort

13

FFMpeg Streaming-Führung hat einen bestimmten Abschnitt auf, wie Latenz zu reduzieren. Ich habe noch nicht alle ihre Vorschläge ausprobiert. http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide#Latency

Sie machen eine besondere Note zu Latenz ffplay führt:

standardmäßig ffplay eine kleine Latenz ihrer eigenen einführt, Brauchbar ist auch mplayer mit seiner -nocache zum Testen Latenz (oder -benchmark). die SDL aus Verwendung wird auch gesagt, Frames mit minimaler Latenzzeit anzuzeigen: ffmpeg ... -f sdl -

+4

danke, 'ffplay -probesize 32 -sync ext INPUT' aus dem Link hat den Trick für mich! – user3473830

+0

Welche Latenz haben Sie erreicht? Ich brauche mehr als 100 ms Streaming-Latenz. Ist es möglich ? –

+0

Ich habe die letzte Verzögerung nicht gemessen, aber es sah aus, als würde ich live auf einem Monitor mit dem Sound leben, der durch eine Tonkabine ging, also war es gut genug für mich. –