Dos de las opciones que recomiendo son ffmpeg y gifski., recuerda que puedes instalar Linux en Windows Subsystem for Linux WSL / WSL2.
Con ffmpeg
He instalado Ubuntu en WSL.
En Linux
Actualizamos
sudo apt update && sudo apt upgrade
Instalamos ffmpeg
sudo apt install ffmpeg
En MacOs
Instala Homebrew y ffmpeg desde la terminal.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install ffmpeg
Convertimos con ffmpeg a gif
Nos ubicamos en la carpeta donde se encuentra nuestro video.
ffmpeg -i Install_nodejs.mp4 -filter:v fps=10 Install_nodejs.gif
Sintaxis:
ffmpeg -i [video_a_convertir.mp4] -filter:v fps=[valor_fps] [archivo_de_salida.gif]
Comprendamos las opciones de ffmpeg:-i
Indica cual video ingresaremos (en input) espacio y después del video, para este caso convertiremos Install_nodejs.mp4
-filter:v fps=10
indico 10 fps fotogramas por segundo (Frame rate)Install_nodejs.gif
indicamos el nombre del archivo gif de salida.
Como podemos apreciar el tamaño / calidad del gif deja mucho que desear por lo que recomiendo gifski, en cual veremos a continuación.
P.D. Tambien he echo pruebas con gifsicle, pero no hay como gifski.
Con gifski
Si lugar a duda gifski es mejor que ffmpeg en lo que gifs animados se refiere.
En Linux
Descargamos e instalamos su ultimo release de Github
wget https://github.com/ImageOptim/gifski/releases/download/1.13.0/gifski_1.13.0-1_amd64.deb
sudo apt install ./gifski_1.13.0-1_amd64.deb
En MacOs
Ya instalado Homebrew, instalamos gifski desde la terminal.
brew install gifski
Convertir video a gif animado
gifski --fps 2 -o Install_nodejs.gif Install_nodejs.mp4
Sintaxis de su uso:
gifski --fps [valor_fps] -o [archivo_de_salida.gif ] [video_a_convertir.mp4]
Le he dado un valor de 2 a los –fps fotogramas por segundo (cuantas imágenes se mostrara por segundo)., podemos jugar con este teniendo en cuenta que entre mas tenga el archivo gif sera mas pesado.
Comparativa
Con ffmpeg:
Con gifski:
Como vemos el ganador es gifski mostrando una calidad del GIF superior y con un archivo mas pequeño 349KB vs 398KB de ffmpeg.
Convertirlo y cambiar el tamaño de salida del gif
Podernos cambiarlo de tamaño con la opción de ancho --widht [valor_en_pixeles]
y el alto se ajustara en relación al tamaño del video.
gifski --fps 2 --width 320 -o Install_nodejs_320.gif Install_nodejs.mp4
Alternativas para Windows
https://macroplant.com/adapter
Alternativas para MacOS
https://mortenjust.github.io/droptogif
Alternativas Multiplataforma (Web)
https://ezgif.com/video-to-gif
https://new.express.adobe.com/tools/convert-to-gif
https://www.img2go.com/es/convertir-video-a-gif
Script en Python para convertir todos los archivos .mp4 a .gif animados con gifski
He creado el archivo convert_mp4_to_gif.py y lo he colocado en la carpeta donde se encuentran todos mis videos mp4 a convertir a gif animados.
import os path = ('./') folder = os.listdir(path) for file in folder: if file.find('.mp4') > 0: remp_name = file.replace('.mp4', '.gif') convert = 'gifski --fps 2 -o ' + remp_name + ' ' + file os.system(convert)
Por ultimo desde la terminal ejecuto:
python3 convert_mp4_to_gif.py
Procesara por lotes todos los archivos de video a gifs animados.