Estou tentando extrair um GIF de um arquivo de vídeo MP4.
Agora tenho dois modi com os quais faço isso:
1) o normal:
ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -s 320x174 -filter_complex "fps=15" output.gif
que fornece um arquivo de 1,6 MB.
e 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
o que oferece um arquivo grande com melhor aparência, mas com 4,5 MB (aumento de 181%). Ele usa um arquivo de paleta 16x16, que criei com
ffmpeg -y -t 7.7 -ss 00:22:53 -i video.mp4 -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png
Agora não consigo entender como 2 GIFs com o mesmo fps, duração e resolução podem ter uma diferença tão grande de tamanho. Minha intuição seria que eles deveriam ser iguais. Por que existe essa diferença? E existe alguma maneira de cortar o tamanho de 2) para o de 1) sem perder qualidade?
Obrigado
Responder1
Devido à forma como os GIFs funcionam, quanto mais complicada a paleta, o GIF resultante fica maior rapidamente.
Eu usaria o GIMP para otimizar o GIF resultante do número 2 - não tenho 100% de certeza de como funciona, mas acho que basicamente exclui informações duplicadas de um quadro para o outro.