Comment faire pour convertir un gif animé en mp4 ou mv4 en ligne de commande?


79

Quelle commande utiliserais-je pour convertir un fichier vidéo mp4 ou mv4 en un gif animé, et inversement. C’est-à-dire convertir un gif animé en mp4 ou mv4.

Réponses:


109

Voici ce qui a fonctionné pour moi:

ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4

movflags - Cette option optimise la structure du fichier MP4 afin que le navigateur puisse le charger le plus rapidement possible.

pix_fmt - Les vidéos MP4 stockent des pixels dans différents formats. Nous incluons cette option pour spécifier un format spécifique offrant une compatibilité maximale entre tous les navigateurs.

vf - Les vidéos MP4 utilisant H.264 doivent avoir une dimension divisible par 2. Cette option garantit que c'est le cas.

Source: http://rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video


4
Merci c'est la seule version qui a fonctionné pour moi sur osx.
Pykler

1
Cela a fonctionné pour moi sur Ubuntu 16.10 avec ffmpeg 3.0.2, là où la réponse n’est pas
cat

1
Vous pouvez aussi rogner au lieu de mettre à l’échelle (remplacer scalepar crop), car vous ne couperez qu’au plus 1 pixel. La mise à l'échelle peut rendre les choses floues
Jezzamon

Cela a coupé les dernières secondes pour moi. La mp4 résultante s'est terminée tôt.
callum

38

Dans mon cas, utiliser ffmpegdirectement a fait l'affaire et a fourni le meilleur résultat:

$ ffmpeg -f gif -i infile.gif outfile.mp4

2
a produit une vidéo vierge (corrompue) sur os x
Pykler

2
@Pykler, vous devriez probablement augmenter la verbosité et / ou consulter le fichier journal pour comprendre ce qui se passe.
BenC

Moi aussi, probablement le "divisible par 2 dimensions" suggéré dans la réponse de vico Vault. (qui a fonctionné pour moi)
lapo

Cette méthode a parfaitement fonctionné pour moi. (La réponse la plus haute a provoqué l'interruption de 3 secondes de la fin.) EDIT: oh mais ça ne joue pas sur iOS :(
callum

Une page Web indique que vous devriez simplement ajouter -pix_fmt yuv420p
beefeather

2

Une autre façon de convertir une animation GIF en vidéo:

ffmpeg -i your_gif.gif -c:v libvpx -crf 12 -b:v 500K output.mp4

Les valeurs -crf peuvent aller de 4 à 63. Des valeurs inférieures signifient une meilleure qualité. -b: v est le débit maximum autorisé. Plus haut signifie meilleure qualité.


2

Si vous voulez faire la sortie en "n boucles" , regardez cette solution en un coup

Convertissons donc un fichier normal.gif en boucle.mp4

pour exemple de film 2 boucles:

ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y

pour un exemple de film de 5 boucles:

ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y

ATTENTION: il y a un -y [pour l'écrasement]


Si vous exécutez la première ffmpegcommande sans -y , vous aurez beaucoup moins de chances d'écraser accidentellement quelque chose que vous ne voudriez pas. (Il existe probablement aussi un moyen de ffmpegcanaliser la vidéo en elle-même et de le faire en une seule commande, sans le fichier intermédiaire ni l'écrasement.)
FeRD le

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.