So stellen Sie sicher, dass ffmpeg mit einer Geschwindigkeit über 1x transkodiert

So stellen Sie sicher, dass ffmpeg mit einer Geschwindigkeit über 1x transkodiert

Ich versuche, TV mit HLS zu streamen. Mein Setup ist ffmpeg und nginx (mit nginx-tx-Modul für HLS-Streaming). Ich verwende den folgenden Befehl, um das Video auf eine Höhe von 320 zu skalieren und es mit Standardwerten zu schärfen. Ich verwende den folgenden Befehl.

ffmpeg -report -f mpegts -i <input> -vf "scale=trunc(oh*a/2)*2:320,unsharp=lx=3:ly=3:la=1.0" -vcodec libx264 -crf 24 -preset medium -acodec aac -b:a 50k -f mpegts <output>

Das Problem ist, dass dieser Befehl mir unterschiedliche Geschwindigkeiten gibt. Zunächst startet es hoch, z. B. 5x, und verlangsamt sich dann auf 0,6x. Wenn ich es nach einiger Zeit neu starte, startet es hoch, verlangsamt sich dann, bleibt aber über 1x. Wie stelle ich also sicher, dass die Geschwindigkeit immer über 1x liegt?

Wenn die Geschwindigkeit unter 1x fällt, funktioniert mein Live-Stream nicht mehr so ​​gut und das Videojs, das ich im Browser verwende, wird ständig gepuffert.

Edit: Ich sollte auch sagen, dass ich, da ich 3 verschiedene Kanäle streame, 3 Instanzen von ffmpeg laufen habe. Die erste ist ok, immer über 1x. Aber bei den letzteren habe ich Probleme mit nicht-deterministischem Verhalten (manchmal >1x, manchmal <1x in der Geschwindigkeit)

Irgendwelche Ideen?

verwandte Informationen