Hay herramientas gráficas que nos permiten hacer esto que les voy a mostrar ahora, pero nunca está de más saber como hacerlo desde el terminal, porque si, somos frikys de la consola.
Los pasos que les voy a mostrar son los mismos que podemos encontrar en XModulo, pero ahí están en Inglés.
La idea es convertir un video, o mejor dicho, una parte de él en un GIF animado con unos simples comandos, haciendo uso de FFMPEG y ImageMagick, los cuales como es lógico, debemos tener instalados para que esto funcione.
Edito: Una vez terminado y publicado el artículo me acabo de percatar de que esto posiblemente también se pueda hacer en macOS. 😉
Seleccionar el video
Este paso es obvio. Debemos seleccionar el video que queremos convertir en .gif sin importar el formato que tenga. Probé con .mkv, .avi, .mpeg y todos funcionaron.
Si queremos una parte exacta del video, o varias partes, debemos saber en que segundo/minuto comienza.
Crear el GIF
Voy a aclarar en este punto un par de cosas. Primero, en el tutorial original se usa como nombre de archivo para el GIF out%04d.gif porque de esa manera, los frames individuales se nombrarán y guardarán correctamente. Para este ejemplo no es necesario.
Y aquí viene la magia. Para este ejemplo, digamos que el video se llama chihuahua.avi y el formato del comando sería:
$ ffmpeg -t <duration> -ss <starting position in hh:mm:ss format> -i <input_video> out%04d.gif
Lo cual, en castellano viene siendo:
$ ffmpeg -t 5 -ss 00:00:10 -i chihuahua.avi animacion1.gif
Esto se traduce a que: extrae 5 segundos del video a partir del minuto 00:10, o sea, a partir de los 10 segundos una vez comenzado el video.
Ahora, si queremos por ejemplo tomar otra parte del video, repetimos el comando cambiando el tiempo de duración, el minuto a partir de cual queremos extraer el video y el nombre del gif.
$ ffmpeg -t 15 -ss 00:00:40 -i chihuahua.avi animacion2.gif
En este caso, extraerá 15 segundos a partir del minuto 00:40.
Unir los gif
Para unir ambos GIF en uno solo, hacemos uso de ImageMagick y una de sus herramientas. Y el comando es el siguiente:
$ convert -delay <ticks>x<ticks-per-second> -loop 0 out*gif <output-gif-file>
En el comando, la opción -delay controla la velocidad de la animación. La opción -loop 0 indica infinitos bucles de animación y si lo desea, puede especificar -loop N, en cuyo caso la animación se repetirá N cantidad de veces.
Por ejemplo, para crear una imagen GIF animada con 20 cuadros por segundo y bucle infinito, use el siguiente comando.
$ convert -delay 1x20 -loop 0 animacion*.gif animacion_final.gif
Reducir un poco el tamaño del GIF
En mi experiencia la reducción no fue muy grande en cuanto a tamaño, pero si queremos ahorrarnos un poco de peso en el GIF, podemos intentar usar este comando:
$ convert -layers Optimize animacion_final.gif animacion_peque.gif
Y eso es todo queridos amigos. Las gracias y los créditos para XModulo.com
Deja una respuesta