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 se 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 internamente usan 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:
¡¿Que esta pasando?!
En resumen, (a menudo) debe incluir el argumento -pix_fmt yuv420p
cuando usa ffmpeg para generar contenido H.264 para software/dispositivos de Apple y un montón de otros decodificadores que no manejan yuv444p.
# ffmpeg -i input.avi -pix_fmt yuv420p output.mp4
Esto no se menciona en el resultado cuando se usan los valores predeterminados, pero se puede encontrar en su guía Encode/H.264 .
Resulta que ffmpeg ha elegido un formato de píxel predeterminado de yuv444p para la codificación libx264 (en algunas circunstancias), que no es compatible con los decodificadores H.264 de software/hardware de Apple (¿y quizás no sea muy compatible en general? ). Desafortunadamente, parece poco probable que esto cambie, y no hay advertencia al respecto, por lo 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.
Además de yuv420p
algunos descubrimientos sobre códecs en 2021 (Catalina 10.15.7 y Monterey 12.0.1, imovie 10.3 y 10.2.5, ffmpeg 4.4).
No todos los *264
códecs son iguales. El -c:v libx264
códec no se puede importar de forma coherente. En su lugar, utilice -c:v h264_videotoolbox
.
Esto es cierto en el "silicio de Apple" (también conocido como ARM) y en las CPU de Intel.
Ni libx265 ni hevc_videotoolbox se pueden importar de manera consistente, si es que se pueden importar.
(editar, días después, tenía un video que no se importaría con .-c:v hd264_videotoolbox
Funcionó con , así que una cosa más para probar)-c:v copy -c:a copy
Milán Babuškov
drfrogsplat
ffprobe -select_streams v -show_streams output.mp4
?trisweb
Shayán
david señor