¿Por qué no se muestra el video de ffmpeg en QuickTime, iMovie o vista previa rápida?

20

He estado usando ffmpeg para la conversión de video ocasional durante bastante tiempo, y recientemente descubrí que los videos H.264 (libx264) generados por ffmpeg no funcionan en iMovie o QuickTime (ni reproducirán ni mostrarán una vista previa en Finder con La función de vista rápida).

Si genero videos usando aplicaciones OS X que usan internamente ffmpeg (por ejemplo, MP4tools o Adapter ), los videos funcionan bien, pero no cuando trato de usar ffmpeg directamente, por ejemplo, para convertir un video:

# ffmpeg -i input.avi output.mp4

o para combinar algunas imágenes en un video:

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

iMovie solo importa el video en negro / en blanco, la vista previa rápida solo muestra la información del archivo (pero no la vista previa del video), y Quicktime me dice que no puede reproducirlo:

documento no pudo ser abierto

¡¿Que esta pasando?!

drfrogsplat
fuente

Respuestas:

31

En resumen, (a menudo) debe incluir el argumento -pix_fmt yuv420pal usar ffmpeg para generar contenido H.264 para el software / dispositivos de Apple, y un grupo de otros decodificadores que no manejan yuv444p.

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

Esto no se menciona en la salida cuando se usan los valores predeterminados, pero se puede encontrar en su guía Encode / H.264 .

Se resulta que ffmpeg han elegido un formato predeterminado de píxeles de yuv444p para libx264 codificación (en algunas circunstancias), que no es compatible con el software / hardware de Apple H.264 decodificadores (y tal vez no sea muy ampliamente compatibles en general? ). Desafortunadamente, parece poco probable que esto cambie, y no hay ninguna advertencia al respecto, así que es algo que debe saber si usa ffmpeg para crear archivos H.264.

Por lo que puedo decir, si convierte un video que ya usa yuv420p lo mantendrá, pero si convierte algo un poco más exótico (por ejemplo, imágenes o un GIF o lo que sea), el formato de píxel debe especificarse para la compatibilidad general de Apple.

drfrogsplat
fuente
1
No ayuda en la versión actual de iMovie (Yosemite). ¿Alguna otra idea?
Milan Babuškov
1
¿Puedes publicar la salida de ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat
+1, incluso los videos yuv420p tampoco se reproducen en High Sierra.
trisweb
No solo Apple, sino también el reproductor multimedia de Windows a veces no puede reproducir la salida si no especifica esa opción. Y si intentas jugarlo con otros jugadores, sería una pantalla gris con artefactos que se muestran en video.
Shayan