1. ffmpeg -y -i video.avi -vf fps=20,scale=540:-1:flags=lanczos,palettegen palette.png
  2. ffmpeg -i video.avi -i palette.png -filter_complex "fps=20,scale=540:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
  3. gifsicle output.gif -O3 --lossy=15 > optimized.gif

Для шага №4 нужно поставить патченную версию gifsicle, которая умеет сжимать с потерями качества.