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

20

Ich verwende ffmpeg seit einiger 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 (und im Finder auch nicht abgespielt oder in einer Vorschau angezeigt werden die Schnellansicht).

Wenn ich Videos mit OS X-Anwendungen generiere, 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 um einige Bilder zu einem Video zu kombinieren:

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

iMovie importiert das Video nur als Schwarz / Leer, die Schnellvorschau zeigt nur die Dateiinformationen (aber keine Videovorschau) und Quicktime sagt mir, dass es nicht abgespielt werden kann:

Dokument konnte nicht geöffnet werden

Was ist los?!

drfrogsplat
quelle

Antworten:

31

Kurz gesagt, Sie müssen (oft) das Argument einschließen, -pix_fmt yuv420pwenn Sie ffmpeg zum Generieren von H.264-Inhalten für Apple-Software / -Geräte und eine Reihe anderer Decoder verwenden, 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, ist jedoch in der Encode / H.264-Anleitung zu finden .

Es stellt sich heraus, dass ffmpeg für die libx264-Codierung (unter bestimmten Umständen) das Standardpixelformat yuv444p gewählt hat, das nicht mit Apples Software / Hardware-H.264-Decodern kompatibel ist (und im Allgemeinen möglicherweise nicht sehr kompatibel ist? ). Leider ist es unwahrscheinlich, dass sich dies ändert, und es gibt keine Warnung, sodass Sie nur wissen müssen, wenn Sie ffmpeg verwenden, um H.264-Dateien zu erstellen.

Wenn Sie ein Video konvertieren, das bereits yuv420p verwendet, wird dies zwar beibehalten. Wenn Sie jedoch ein etwas exotischeres Format (z. B. Bilder oder ein GIF oder was auch immer) konvertieren, muss das Pixelformat für die allgemeine Apple-Kompatibilität angegeben werden.

drfrogsplat
quelle
1
Hilft in der aktuellen Version von iMovie (Yosemite) nicht. Irgendwelche anderen Ideen?
Milan Babuškov
1
Kannst du die Ausgabe von posten ffprobe -select_streams v -show_streams output.mp4?
Drfrogsplat
+1, auch yuv420p-Videos werden in High Sierra nicht abgespielt.
Trisweb
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 Playern abzuspielen, wird es ein grauer Bildschirm mit Artefakten, die auf dem Video angezeigt werden.
Shayan,