Die Ausgabe von FFmpeg hat einen "Zeitlupen" -Teil - was ist das und wie kann man es vermeiden?

Quellvideo

Ich habe einen Screencast vom iPad mit QuickTime Player unter macOS aufgenommen.

Wenn ich die Originalaufnahme in QuickTime Player zur Wiedergabe öffne, sehe ich die Wiedergabesteuerung wie folgt:

Geben Sie hier die Bildbeschreibung ein


wird bearbeitet

Ich habe das Video mit dem folgenden Befehl verarbeitet ( vollständiges Protokoll ):

ffmpeg -i test-source.mov test-result.mov

Ergebnisvideo im QuickTime Player

Wenn ich dann das Ergebnis im QuickTime Player öffne, sehe ich die Steuerelemente wie folgt:

Geben Sie hier die Bildbeschreibung ein

Der Teil mit spärlicheren "Punkten" wird in Zeitlupe abgespielt, ich kann die Balken ziehen, um den Anfang und das Ende dieses Teils zu ändern und ihn auf Nulllänge zu minimieren (die Gesamtlänge ändert sich dann von 03:06 auf 01:00 und voll Video wird mit normaler Geschwindigkeit abgespielt).


Ergebnisvideo in iMovie 10

Wenn ich das Video in iMovie mit „Medien importieren“ hinzufüge, sehe ich die „Geschwindigkeits“-Steuerung, die bereits auf die Quelle angewendet wurde:

Geben Sie hier die Bildbeschreibung ein

Ich kann es ausschalten, bevor ich es zur Timeline hinzufüge, aber wenn ich es nicht tue, wird der Clip mit den folgenden Decorators angezeigt, die normale Geschwindigkeit (links und rechts) und langsam (der mittlere Abschnitt mit der Schildkröte) anzeigen:

(für diesen Screenshot habe ich ein schwarzes Overlay hinzugefügt, um das Video auszublenden)

Geben Sie hier die Bildbeschreibung ein

Sowohl die Grenzen der Geschwindigkeitsabschnitte als auch die Verlangsamungsrate unterscheiden sich zwischen QuickTime Player (1 Min. Film erweitert auf 3:06) und iMovie (erweitert auf 1:30).


VLC merkt es nicht, spielt das Video mit normaler Geschwindigkeit ab.


Fragen

  • Wie heißt diese Funktion?

  • Wie kann man diesen Zeitlupenteil in der Ausgabe von FFmpeg vermeiden?

Teilen Sie das Protokoll von ffmpeg -i test-source.mov -i test-result.mov. Wie wird die Datei in anderen Playern wie VLC abgespielt?
Ich habe das Log in den Pastebin hochgeladen . Wie ich in meinem vorherigen Kommentar erwähnt habe, spielt VLC es mit normaler Geschwindigkeit ab.
Ich bin hier ein paar Jahre, nachdem Sie das gefragt haben, und es hat perfekt beantwortet, wonach ich gesucht habe. Vielen Dank!

Antworten (1)

Ihre Quelle hat eine variable Bildrate mit einer Spitzenrate von 120 und einer durchschnittlichen Rate von fast 60. Redakteure möchten in der Regel Streams mit konstanter Bildrate. Wenn Sie Ihre gesamte transcodierte Datei als 120 fps interpretieren können, sollten Sie das erwartete Ergebnis erhalten. Alternativ können Sie die ursprüngliche variable Framerate beibehalten,

ffmpeg -i test-source.mov -vsync vfr test-result.mov

oder auf konstante 60 fps umcodieren,

ffmpeg -i test-source.mov -r 60 test-result.mov
Dies hat definitiv funktioniert, aber ich hatte die gleichen Fragen wie zuvor und stellte sie in Frage - ist es ein Feature (ich denke schon, weil es eine bestimmte Schnittstelle hat), wie heißt dieses Feature und wofür wird es verwendet? Auch warum das Original den Zeitlupenteil nicht beachtet, während die verarbeitete Datei dies tut ...
Dies hat mehr mit Apples AV-Backend zu tun als mit der Datei oder ffmpeg. Ich vermute, dass in einer VFR-Datei Regionen mit einer überdurchschnittlichen Rate verlangsamt werden. Nur eine Vermutung.
Falls noch jemand an der Antwort interessiert ist. Diese Art von Video entsteht, wenn Sie es in "Zeitlupe" aufnehmen (zumindest das iPhone macht das). In diesem Modus verlangsamt Ihre Kamera das Video nach den ersten etwa 10 % der Spielzeit und beschleunigt es dann vor dem Ende wieder. Es sieht ziemlich cool aus, wenn du mit deinem Hund Apportieren aufnimmst, nehme ich an. Ich habe nach einer Möglichkeit gesucht, es loszuwerden, und keiner dieser beiden Befehle hat es geschafft =/