Primero necesitamos un par de herramientas herramientas:
apt install ffmpeg youtube-dl
y ahora descargamos un video para determinar el momento de inicio y fin del gif:
youtube-dl -f webm https://www.youtube.com/watch?v=lGP1YFE5s4M -o video.webm
ahora extraemos el segmento del video que queremos convertir a gif, reemplazando XX por el tiempo previo al inicio de fragmento, y YY por la duración del mimsmo.
ffmpeg -ss XX:XX:XX -i video.webm -ss 00:00:00 -t YY:YY:YY -c copy fragmento.webm
luego generamos un patrón para el gif, en el que reemplazamos YYY por el tamaño del lienzo (640)
ffmpeg -y -i fragmento.webm -vf fps=10,scale=YYY:-1:flags=lanczos,palettegen patron.png
después convertimos el video a gif
ffmpeg -i fragmento.webm -i patron.png -filter_complex "fps=10,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" archivo.gif
y finalmente recortamos el gif para extraer la parte del lienzo que queremos, reemplazando XXX por el el ancho, YYY por el alto, ZZZ por el margen izquierdo y AAA por el superior.
convert archivo.gif -coalesce -repage 0x0 -crop XXXxYYY+ZZZ+AAA +repage final.gif
los pasos exactos que seguí para generar este gif fueron
~$ youtube-dl -f webm https://www.youtube.com/watch?v=lGP1YFE5s4M -o video.webm
~$ ffmpeg -ss 00:00:53 -i video.webm -ss 00:00:00 -t 00:00:05 -c copy fragmento.webm
~$ ffmpeg -y -i fragmento.webm -vf fps=10,scale=640:-1:flags=lanczos,palettegen patron.png
~$ ffmpeg -i fragmento.webm -i patron.png -filter_complex "fps=10,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" archivo.gif
~$ convert archivo.gif -coalesce -repage 0x0 -crop 320x300+150+000 +repage final.gif by k054