web-dev-qa-db-fra.com

Comment puis-je obtenir ffmpeg pour convertir un .mov en un .gif?

J'essaye de convertir un .mov en un .gif et je n'ai pas de succès.

Voici l'erreur:

ffmpeg -pix_fmt rgb24 -i yesbuddy.mov output.gif
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun 12 2012 17:47:34 with clang 2.1 (tags/Apple/clang-163.7.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/0.11.1 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-libfreetype --cc=/usr/bin/clang --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --disable-ffplay
  libavutil      51. 54.100 / 51. 54.100
  libavcodec     54. 23.100 / 54. 23.100
  libavformat    54.  6.100 / 54.  6.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     2. 77.100 /  2. 77.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
Option pixel_format not found.

Si je laisse de côté la partie -pix_fmt rgb24, il se plaint. Pensées sur la façon de réparer?

87
Daniel Fischer

L'ordre des arguments en ligne de commande est important. Cette ligne de commande devrait fonctionner mais générera un fichier géant:

ffmpeg -i yesbuddy.mov -pix_fmt rgb24 output.gif

Notez que vous souhaitez probablement réduire la cadence et la taille des images lors de la conversion, ainsi que spécifier une heure de début et une durée. Vous ne souhaiterez probablement pas convertir le fichier entier à sa résolution et à sa cadence d'origine.

ffmpeg -ss 00:00:00.000 -i yesbuddy.mov -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif

La taille du fichier sera toujours énorme. Vous pourrez peut-être utiliser l'optimiseur GIF de ImageMagick pour réduire la taille:

convert -layers Optimize output.gif output_optimized.gif
147
PleaseStand

Après la conversion:

ffmpeg -i input.mp4 input.gif 

Essayez d'optimiser les cadres:

convert input.gif -verbose -coalesce -layers OptimizeFrame input_optframe.gif

Et utilisez gifsicle pour effectuer l’optimisation finale:

gifsicle -O2 input_optframe.gif -o optimized.gif

Vous avez 6,8 Mo GIF de 12,2 Mo vidéo avec presque la même qualité!

9

J'ai créé un outil qui regroupe FFmpeg, ImageMagick et giflossy dans un programme de ligne de commande simple à utiliser que vous pouvez installer en une ligne: https://github.com/vvo/gifify

Je recommande à tous ceux qui souhaitent transformer des vidéos => GIF de l’utiliser au lieu de passer beaucoup de temps à parcourir 3 sites Web de documentation pour comprendre comment redimensionner le GIF ou modifier l’heure de début/de fin.

7
vvo
ffmpeg -y -i input.mp4 -f image2pipe -vcodec ppm - | convert -delay 2 -loop 0 -layers Optimize - gif:- | gifsicle -d 3 -O3 -o optimized.gif

utilisez d'abord ffmpeg pour convertir le fichier mp4 en images via un tuyau, puis utilisez imagemagick pour le compresser en gif, optimisé pour la dernière fois avec gifsicle

Je ne sais pas pourquoi utiliser directement gifscicle ne fonctionnera pas.

ou vous pouvez faire le gif plus petit par cette

convert -dither none -Matte -depth 8 -deconstruct -layers optimizePlus -colors 32 in.gif out.gif
1
Shuman