2010-07-09 35 views
24

¿Hay alguna forma de convertir un gif animado a un formato de video (por ejemplo, .avi) en Linux?Gif animado a avi en linux

Ya he probado

ffmpeg -i thegif.gif thevideo.avi 

pero lo único que consigue es la primera imagen del vídeo.

+0

ffmpeg -i foo.mkv foo.gif trabaja con ffmpeg actual, e incluso funciona bien con gifs animados de imágenes por segundo variables . Con la salida de mkv, obtienes una velocidad de cuadro variable mkv. Con la salida de mp4, aumenta los fps tan alto como sea necesario, y luego duplica los cuadros según sea necesario para que las cosas se muestren cuando corresponda. p.ej. un gif con unos 25 fps y unos 10 fps hicieron un mp4 a 50 fps, con 2x dups y 5x dup frames dependiendo de qué parte. Almacenar marcos duplicados no requiere mucho espacio, IDK si están incluso en la secuencia h.264 o simplemente en el contenedor mp4. –

Respuesta

12

puedo sugerir combinación de ImageMagick y ffmpeg

hacer esto para extraer cada fotograma como png/jpeg

$magick> convert 'images.gif[0]' image.png 

hacer esto para convertir las imágenes en secuencia de la película

ffmpeg -f image2 -i image%d.jpg video.mpg 

Más ayuda en los comandos

http://www.imagemagick.org/script/command-line-processing.php

http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs

http://electron.mit.edu/~gsteele/ffmpeg/

+7

Si su gif tiene transperance, tiene que agregar -coalesce como este: convertir -coalesce download.gif%% 05d.png –

+0

-1, porque su primer comando no funciona. Pero el comando de NordicMainframe funciona. – erik

+1

Esto pierde la información de velocidad de cuadro del gif de entrada. ffmpeg actual ahora maneja la entrada animada gif directamente. –

43

entrada gif de ffmpeg no funciona demasiado bien. Por lo general es más fácil para desempaquetar los marcos del GIF con convert (de ImageMagick) y procesar estos con ffmpeg:

convert some.gif some%05d.png 
ffmpeg -i some%05d.png some.avi 
rm some*.png 
+0

Gracias. Estaba buscando su primera línea de comando: 'convert some.gif some% 05d.png' – Dorian

+3

Si algunos marcos están rotos porque solo muestran diferencia con el marco base, use la opción' -coalesce' para 'convertir'. – Hnatt

+0

cuando usa '-coalesce' puede necesitar eliminar el primer cuadro porque no tiene el mismo formato que los demás (' PseudoClass' en lugar de 'DirectClass'). Puede existir un método para convertirlo ... – xiawi

9

Si te gusta tener una cierta tasa de fotogramas como entrada debido a que el vídeo resultante es rápido o para ralentizar

ffmpeg -r 'xx' -i some%05d.png some.avi 

donde xx es el framerate de entrada.

0

Si te gusta tener un bucle como salida

ffmpeg -loop 1 -t x -i some%05d.png some.avi 

donde x es el tiempo que el vídeo debe funcionar en cuestión de segundos.

Source

0

Si no quieres los archivos temporales, puede intentar mencoder:

mencoder myfile.gif -mf fps=25 -o myfile.avi -ovc lavc -lavcopts vcodec=mpeg4