У меня тоже ручной труд есть:
- Код: Выделить всё
ffmpeg -i src.mov -vf "trim=start_frame=60:end_frame=120,fps=30,setpts=PTS-STARTPTS,scale=256:224:flags=neighbor+bitexact" -pix_fmt '+' -codec:v png -y tmp.mov
(обрезка видео по кадрам, понижение fps, чтобы гифы нормально игрались, смена разрешения, т.к. оригинал видео в 512x448)
- Код: Выделить всё
ffmpeg -i tmp.mov -vf "[0:v]palettegen" -y pal.png
(палитра для гифа)
- Код: Выделить всё
ffmpeg -i tmp.mov -i pal.png -lavfi "[0:v][1:v]paletteuse,fps=30" -loop 0 -y final.gif
(гиф с использованием готовой палитры)
- Код: Выделить всё
ffmpeg -i tmp.mov -f apng -loop 0 -y final.png
(здесь я пытаюсь установить бесконечное повторение через -loop 0, но это видимо не работает для apng)
- Код: Выделить всё
ffmpeg -i tmp.mov -vcodec libwebp -lossless 1 -y final.webp
(в доках для libwebp даются флаги для оптимизации, но почему-то они только размер больше делают)