@
ALLROBOT 你贴的这个视频很好压缩啊, 只用 ffmpeg 就行
1. 先用 ffmpeg 把视频 n 倍速播放, 比如: ffmpeg -i TEST.mp4 -filter:v "setpts=0.3*PTS" TEST2.mp4
2. 然后再用我 blog 里面的脚本:
```shell
set -e
# global filter
fps=8
scale=270:-1
interpolation=lanczos
# for palettegen
max_colors=64 # up to 256
reserve_transparent=on
stats_mode=diff # chosen from [full, diff, single]
# for paletteuse
dither=bayer # chosen from [bayer, heckbert, floyd_steinberg, sierra2, sierra2_4a, none]
bayer_scale=5 # [0, 5]. only works when dither=bayer. higher means more color banding but less crosshatch pattern and smaller file size
diff_mode=rectangle # chosen from [rectangle, none]
new=off # when stats_mode=single and new=on, each frame uses different palette
ffmpeg -i $1 -vf "fps=$fps,scale=$scale:flags=$interpolation,split[split1][split2];[split1]palettegen=max_colors=$max_colors:reserve_transparent=$reserve_transparent:stats_mode=$stats_mode[pal];[split2][pal]paletteuse=dither=$dither:bayer_scale=$bayer_scale:diff_mode=$diff_mode:new=$new" -y $2
```
sh ./
gifgen.sh TEST2.mp4 TEST2.gif
得到的 gif 只有 2.3 M, 而且还很清晰.
https://imgur.com/dgcTLsp多调下参, 再结合 gifsicle 可以更小咯, 在清晰度和体积之前寻找一个平衡即可.
如果想实现全自动化, 我觉得一个可行的思路是先肉眼调节到一个可以接受的极限画质, 再用一些图像质量评判标准(gif 的应该也有)算出类似于质量分, 然后用暴力遍历或者启发式搜索去找到一组合适的调节参数就行, 当然, 上神经网络也许也行. 只是一个想法