Usando ffmpeg, ¿cómo puedo convertir un MP4, recortarlo y cambiar su tamaño a GIF?

Usando ffmpeg, ¿cómo puedo convertir un MP4, recortarlo y cambiar su tamaño a GIF?

Me gustaría que ffmpeg tomara un archivo de video MP4 de 1280x720, lo recortara a una proporción de tamaño cuadrado y lo redimensionara a 640x640.

Los siguientes dos comandos me funcionan con una excelente calidad GIF, pero solo falta el cambio de tamaño correcto. Me da una salida GIF pero el tamaño es 1138x640 en lugar de 640x640.

Generando una paleta:

ffmpeg -y -ss 30 -t 3 -i input.mp4 \
-vf fps=10,scale=1138:-1:flags=lanczos,palettegen palette.png

Generando GIF usando la paleta:

ffmpeg -ss 30 -t 3 -i input.mp4 -i palette.png -filter_complex \
"fps=10,scale=1138:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

Esto me da un 1138x640.gif pero ¿cómo puedo hacer que sea 640x640 sin depender de otro comando separado?

Respuesta1

Aquí hay un método simple que funcionará para entradas de 1280x720.

Generar paleta:

ffmpeg -i input.mp4 -filter_complex "fps=10,scale=-1:640,crop=ih:ih,setsar=1,palettegen" palette.png

Crear GIF:

ffmpeg -i input.mp4 -i palette.png -filter_complex "[0]fps=10,scale=-1:640,crop=ih:ih,setsar=1[x];[x][1:v]paletteuse" output.gif

Puedes hacer esto más complejo si lo deseasagregando la force_aspect_ratioopción de escalapara ajustar tamaños de entrada arbitrarios en 640x640, y poragregando split y quincepara evitar crear el archivo de paleta temporal.

información relacionada