Pourquoi la vidéo de ffmpeg ne s'affiche-t-elle pas dans QuickTime, iMovie ou aperçu rapide?

20

J'utilise ffmpeg pour la conversion vidéo occasionnelle depuis un certain temps, et j'ai récemment découvert que les vidéos H.264 (libx264) générées par ffmpeg ne fonctionnent pas dans iMovie ou QuickTime (ni ne joueront ni afficheront un aperçu dans le Finder avec la fonction de vue rapide).

Si je génère des vidéos en utilisant des applications OS X qui utilisent en interne ffmpeg (par exemple MP4tools ou Adapter ), les vidéos fonctionnent correctement , mais pas lorsque j'essaie d'utiliser directement ffmpeg, par exemple pour convertir une vidéo:

# ffmpeg -i input.avi output.mp4

ou pour combiner quelques images dans une vidéo:

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

iMovie importe juste la vidéo en noir / blanc, l'aperçu rapide montre juste les informations du fichier, (mais pas d'aperçu vidéo), et Quicktime me dit qu'il ne peut pas la lire:

le document n'a pas pu être ouvert

Que se passe-t-il?!

drfrogsplat
la source

Réponses:

31

En bref, vous devez (souvent) inclure l'argument -pix_fmt yuv420plors de l'utilisation de ffmpeg pour générer du contenu H.264 pour les logiciels / appareils Apple, et un tas d'autres décodeurs qui ne gèrent pas yuv444p.

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

Ceci n'est pas mentionné dans la sortie lors de l'utilisation des valeurs par défaut, mais peut être trouvé dans leur guide Encode / H.264 .

Il s'avère que ffmpeg a choisi un format de pixel par défaut yuv444p pour l'encodage libx264 (dans certaines circonstances), qui n'est pas compatible avec les décodeurs H.264 logiciels / matériels d'Apple (et peut - être pas très largement compatible en général? ). Malheureusement, il semble peu probable que cela change, et il n'y a aucun avertissement à ce sujet, donc quelque chose que vous devez savoir si vous utilisez ffmpeg pour créer des fichiers H.264.

Pour autant que je sache, si la conversion d'une vidéo qui utilise déjà yuv420p le maintiendra, mais si la conversion à partir de quelque chose d'un peu plus exotique (par exemple des images ou un GIF ou autre), le format de pixel doit être spécifié pour la compatibilité générale avec Apple.

drfrogsplat
la source
1
N'aide pas dans la version actuelle d'iMovie (Yosemite). D'autres idées?
Milan Babuškov
1
Pouvez-vous publier la sortie de ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat
+1, même les vidéos yuv420p ne sont pas également lues dans High Sierra.
trisweb
Non seulement Apple, mais également le lecteur multimédia Windows ne peuvent parfois pas lire la sortie si vous ne spécifiez pas cette option. Et si vous essayez de jouer avec d'autres joueurs, ce serait un écran gris avec des artefacts affichés sur la vidéo.
Shayan