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
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:
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.
Zweitens: Gibt es einen Parameter, den ich in meinen ffmpeg-Befehl einfügen kann, um die Latenz zu steuern?
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>
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