ffmpeg verwendet -re und -ss zusammen

ffmpeg verwendet -re und -ss zusammen

Ich verwende ffmpeg, um eine Videodatei per Livestream an einen RTMP-Server zu senden. Ich verwende die -reOption, um sicherzustellen, dass das Video mit der richtigen Geschwindigkeit an die Live-Quelle gestreamt wird. Gelegentlich möchte ich das Video ab ein paar Minuten streamen. Wenn ich jedoch -ss 00:03:00beispielsweise hinzufüge, werden die ersten paar Frames nicht gestreamt, aber ffmpeg durchläuft sie trotzdem mit -rehoher Geschwindigkeit, was bedeutet, dass ich (in diesem Fall) drei Minuten warten muss, bevor der Stream sichtbar wird, und dann beginnt er nach drei Minuten.

Das ist technisch gesehen das, wonach ich gefragt habe, aber im Kontext auch nutzlos. Gibt es eine Möglichkeit, ffmpeg anzuweisen, zu einem bestimmten Zeitpunkt in zu starten, aber direkt dorthin zu gehen, damit es sich bei Verwendung sinnvoll verhält -re?

In der Mailingliste der ffmpeg-Benutzer gibt es mindestens zwei Fälle, in denen sich Leute gefragt haben, wie das geht, ohne dass eine offensichtliche Lösung in Sicht war.

Antwort1

Versuchen Sie, vor Ihrer Eingabedatei -ss 00:03:00 anzugeben.

Ich habe dies nicht mit Bildschirmaufnahme/Livestreaming ausprobiert, aber ich weiß, dass dies mit der Standard-Transcodierungssyntax von ffmpeg funktioniert.

Beispielsweise gibt der folgende Befehl eine Datei ein, transkodiert die gesamte Datei in h264 und speichert die Ausgabe erst ab der 3-Minuten-Marke.

ffmpeg -i [INPUT] -ss 00:03:00 -c:v h264 [output]

Der folgende Befehl hingegen gibt eine Datei bei der 3-Minuten-Marke ein, transkodiert ab diesem Punkt und speichert dann die Ausgabe. Die Ausgabedatei sollte mit der obigen Ausgabe identisch sein, aber da die ersten drei Minuten nicht dekodiert werden, ist die Verarbeitungszeit viel kürzer.

ffmpeg -ss 00:03:00 -i [INPUT] -c:v h264 [output]

Ich weiß allerdings nicht, ob das mit Livestreaming funktioniert. Hoffe, es hilft!

verwandte Informationen