Lorsque j'essaie d'ouvrir un film que je viens de créer avec la commande:
ffmpeg -pattern_type glob -i '*.JPG' -s 640x480 movie.mp4
Je reçois une erreur de QuickTime:
The document “movie.mp4” could not be opened.
The file may be damaged or may not be a movie file that is compatible with QuickTime Player.
J'ai utilisé la même commande sur un ensemble d'images générées à partir d'un laps de temps iSight, mais dans ce cas, les images ci-dessus proviennent d'un appareil photo numérique. La résolution est beaucoup plus élevée, mais je la redimensionne à 640x480 et je ne vois rien dans la sortie qui suggère un problème:
Input #0, image2, from '*.JPG':
Duration: 00:00:04.76, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj422p(pc), 4928x3264, 25 tbr, 25 tbn, 25 tbc
par rapport au film de travail:
Input #0, image2, from '*.JPG':
Duration: 00:01:23.72, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj420p(pc), 640x480 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc
Et pour la sortie:
Output #0, mp4, to 'movie.mp4':
Metadata:
encoder : Lavf55.19.104
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj422p, 640x480, q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> libx264)
vs pour celui qui travaille:
Output #0, mp4, to 'movie.mp4':
Metadata:
encoder : Lavf55.19.104
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> libx264)
Mis à part que le film de travail est plus long et une résolution source inférieure, la seule différence que je peux voir est qu'il y a un "[SAR 1: 1 DAR 4: 3] supplémentaire" mentionné dans le flux vidéo, mais je n'ai aucune idée de ce que cela est, ou comment essayer de le forcer dans le film non fonctionnel.
Mise à jour: Je viens de télécharger VLC et il joue bien le film. Je sais donc que ffmpeg n'est pas en faute ici.
ffprobe video.mp4
peut être utilisé pour vérifier le format de pixel utilisé.Réponses:
Sur la base de cette réponse StackOverflow , j'ajouterais
-pix_fmt yuv420p
à votre commande comme ceci; l'un des commentaires mentionne l' ajout-vcodec libx264
également, il est donc inclus ici:Ou vous pouvez utiliser le filtre de format . Cet exemple utilise le filtre d'échelle à la place de
-s
et le filtre de format à la place de-pix_fmt
:Également développé dans le Wiki officiel de FFmpeg sous la rubrique «Encodage pour les joueurs muets»; accent sur le mien:
la source
-pix_fmt yuv420p
résolu pour moi!