web-dev-qa-db-fra.com

Comment générer un gif à partir d'avi en utilisant ffmpeg?

J'essaie d'extraire une partie d'une vidéo dans un gif animé en utilisant la commande suivante:

ffmpeg -i video.avi -t 5 out.gif

Il génère un gif animé mais la qualité est folle. Cependant, lorsque je génère une image gif en utilisant:

ffmpeg -i video.avi -t 10 out%d.gif

Il génère une qualité acceptable d'images gif. Comment puis-je générer un gif animé en utilisant la première commande mais la même qualité que la deuxième commande?

49
Marconi

J'ai eu un problème similaire en essayant de générer un gif animé de haute qualité à partir d'une série d'images extraites d'un film.

Pour certaines raisons, le gif animé généré avec ffmpeg ne contient que 103 couleurs pouvant être utilisées à l'aide d'une palette de couleurs système à 256 niveaux, ce qui donne un résultat horrible. Ma solution était plutôt

ffmpeg -i video.avi -t 10 out%02d.gif

puis

gifsicle --delay=10 --loop *.gif > anim.gif

La qualité est alors assez bonne. Vous pouvez trouver des gifsicle ici

Modifier: Mise à jour du message pour refléter les suggestions d'Alex Kahn.

64
Tommy Strand

Je n'ai pas fait de GIF animé auparavant, mais vous pouvez essayer d'utiliser le paramètre de débit binaire pour spécifier la qualité, bien qu'il s'agisse d'une image (et probablement sans débit). La qualité des miniatures répond au paramètre -b. Si par fou, vous voulez dire "incroyablement mauvais", vous pouvez spécifier une très haute tolérance de débit et de débit (vous ne savez pas si vous utilisez une source vbr ou cbr). (ou faites le contraire si vous pensez que c'est trop bon et que vous souhaitez limiter la taille)

'-b', '10000000','-bt', '20000000'

Alternativement, vous pouvez également modifier les dimensions en utilisant le paramètre -s, qui prendra une représentation ordinaire des dimensions comme "1920X1200".

Cela dépend vraiment du débit et de la compression de votre matériel source et de ce que vous espérez que le gif ressemblera. Pensez peut-être à fournir plus d'informations que "fou", mais j'imagine que cela vous donnera un bon départ dans les deux cas. Bonne chance

0
Profane