Estoy intentando extraer un GIF de un archivo de vídeo MP4.
Ahora tengo dos modi con los que hago esto:
1) el normal:
ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -s 320x174 -filter_complex "fps=15" output.gif
que genera un archivo de 1,6 MB de tamaño.
y 2)
ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
lo que da como resultado un archivo mucho más atractivo, pero de 4,5 MB (aumento del 181 %). Utiliza un archivo de paleta de 16x16, que creé con
ffmpeg -y -t 7.7 -ss 00:22:53 -i video.mp4 -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png
Ahora no puedo entender cómo 2 GIF con los mismos fps, duración y resolución pueden tener una diferencia de tamaño tan grande. Mi intuición sería que deberían ser iguales. ¿Por qué existe esta diferencia? ¿Y hay alguna manera de cortar el tamaño de 2) al de 1) sin perder calidad?
Gracias
Respuesta1
Debido a cómo funcionan los GIF, cuanto más complicada es la paleta, el gif resultante se hace más grande con bastante rapidez.
Usaría GIMP para optimizar el GIF resultante del n.° 2; no estoy 100% seguro de cómo funciona, pero creo que básicamente elimina información duplicada de un fotograma al siguiente.