Warum werden Videos von ffmpeg nicht in QuickTime, iMovie oder in der Schnellvorschau angezeigt?

Ich verwende ffmpeg seit geraumer Zeit für die gelegentliche Videokonvertierung und habe kürzlich festgestellt, dass von ffmpeg generierte H.264-Videos (libx264) in iMovie oder QuickTime nicht funktionieren (noch werden sie im Finder abgespielt oder eine Vorschau angezeigt). die Schnellansicht).

Wenn ich Videos mit OS X-Anwendungen erzeuge, die intern ffmpeg verwenden (z. B. MP4tools oder Adapter ), funktionieren die Videos einwandfrei, aber nicht, wenn ich versuche, ffmpeg direkt zu verwenden, z. B. um ein Video zu konvertieren:

# ffmpeg -i input.avi output.mp4

oder einige Bilder zu einem Video kombinieren:

# ffmpeg -f image2 -pattern_type sequence image-%04d.png output.mp4

iMovie importiert das Video einfach als schwarz/leer, die Schnellvorschau zeigt nur die Dateiinformationen (aber keine Videovorschau) und Quicktime sagt mir, dass es es nicht abspielen kann:

Dokument konnte nicht geöffnet werden

Was ist los?!

Antworten (2)

Kurz gesagt, Sie müssen (häufig) das Argument einschließen, -pix_fmt yuv420pwenn Sie ffmpeg verwenden, um H.264-Inhalte für Apple-Software / -Geräte und eine Reihe anderer Decoder zu generieren, die yuv444p nicht verarbeiten.

# ffmpeg -i input.avi -pix_fmt yuv420p output.mp4

Dies wird in der Ausgabe bei Verwendung der Standardeinstellungen nicht erwähnt, kann aber in deren Encode/H.264-Anleitung nachgelesen werden .

Es stellt sich heraus , dass ffmpeg (unter bestimmten Umständen) ein Standard-Pixelformat von yuv444p für die libx264-Codierung gewählt hat, das nicht mit Apples Software/Hardware-H.264-Decodern kompatibel ist (und vielleicht im Allgemeinen nicht sehr kompatibel ist? ). Leider scheint sich dies nicht zu ändern, und es gibt keine Warnung darüber, also nur etwas, das Sie wissen müssen, wenn Sie ffmpeg verwenden, um H.264-Dateien zu erstellen.

Soweit ich das beurteilen kann, wird beim Konvertieren eines Videos, das bereits yuv420p verwendet, dies beibehalten, aber beim Konvertieren von etwas Exotischerem (z. B. Bildern oder einem GIF oder was auch immer) muss das Pixelformat für die allgemeine Apple-Kompatibilität angegeben werden.

Hilft nicht in der aktuellen Version von iMovie (Yosemite). Irgendwelche anderen Ideen?
Kannst du die Ausgabe von posten ffprobe -select_streams v -show_streams output.mp4?
+1, selbst yuv420p-Videos werden in High Sierra nicht abgespielt.
Nicht nur Apple, sondern auch Windows Media Player kann die Ausgabe manchmal nicht wiedergeben, wenn Sie diese Option nicht angeben. Und wenn Sie versuchen, es mit anderen Spielern zu spielen, wäre es ein vollständig grauer Bildschirm mit Artefakten, die auf Video zu sehen sind.
Ich wollte nur hinzufügen, dass dies 2020 für mich funktioniert hat, mit Catalina 10.15.5 und ffmpeg 4.3. Vielen Dank!

Zusätzlich zu yuv420p, einige Entdeckungen zu Codecs im Jahr 2021 (Catalina 10.15.7 und Monterey 12.0.1, imovie 10.3 und 10.2.5, ffmpeg 4.4).

Nicht alle *264 Codecs sind gleich. Der -c:v libx264Codec kann nicht konsistent importiert werden. Verwenden Sie stattdessen -c:v h264_videotoolbox.

Dies gilt für "Apple Silicon" (alias ARM) und Intel-CPUs.

Weder libx265 noch hevc_videotoolbox können konsistent importiert werden, wenn überhaupt.

(Bearbeiten, Tage später hatte ich ein Video, das nicht mit importiert werden konnte -c:v hd264_videotoolbox. Es funktionierte mit -c:v copy -c:a copy, also noch etwas zu versuchen)

Nun, die letzte Zeile, c:v copy, bedeutet, dass kein neues Video erstellt, sondern einfach alles so kopiert wurde, wie es aus einer anderen Quelle stammt.