Wie kann man die Latenz bei FFmpeg-Videostreaming reduzieren?

2592
dempap

Bei einer Video-Streaming-Anwendung zwischen einem Linux-Server (FFmpeg) und einem Windows-Client (VLC-Player) ist eine Latenzzeit von etwa 10 Sekunden festzustellen.

FFmpeg-Befehl:

ffmpeg -re -f v4l2 -i /dev/video0 http://192.168.1.101:8090/feed1.ffm 

VLC-Spieler:

http://192.168.1.101:8090/test.swf 

Trotz der Tatsache, dass Server und Client zusammen starten, verzögert der VLC-Player den Stream um etwa 10 Sekunden und spielt ihn ab dem ersten Frame, das der Server erfasst hat. Aus diesem Grund gibt es ständig eine Verzögerung von 10 Sekunden.

Ich versuche herauszufinden, was diese Latenz verursacht:

  1. Mein erster Gedanke ist, dass Codecs mit der Codierung verzögert werden. Welchen Codec sollte ich in meiner Konfigurationsdatei für ffserver enthalten? Ich habe mit vielen Videocodecs experimentiert (rawvideo, flv, mjpeg), aber das gleiche Ergebnis.

  2. Zweitens: Gibt es einen Parameter, den ich in meinen ffmpeg-Befehl einfügen kann, um die Latenz zu steuern?

  3. Andererseits könnte diese Latenz aufgrund eines VLC-Players auftreten?

Ich verstehe, dass diese Frage irgendwie allgemein ist. Jede Hilfe, falls Sie mit einem ähnlichen Problem konfrontiert sind, wäre jedoch sehr dankbar.

FFserver-Konfigurationsdatei:

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> 
3
https://trac.ffmpeg.org/wiki/StreamingGuide#Latency kann für Sie nützlich sein rogerdpack vor 5 Jahren 0

1 Antwort auf die Frage

1
binaryCode

Add the option ffmpeg with -tune zerolatency and best option using x265 codec, reduce VideoSize 640x480 to VideoSize 320x240.

Lastly, change your player from vlc to ffplay