我们在博客中广泛使用 gif。我们曾经在其中嵌入 tenor nano gif(90px 高度保持纵横比,用于移动设备上的 GIF 预览和共享)。现在我们想创建自己的 gif,并使用以下命令将 mp4 转换为 gif,同时保留 tenor 的 nano gif 的属性。使用 ffmpeg 版本 4.1.4
ffmpeg -i input.mp4 -filter_complex "[0:v]fps=10,scale=-1:90:flags=lanczos,split [a][b];[a] palettegen [p];[b][p] paletteuse" -y output.gif
但是我们发现我们创建的 gif 和使用 tenor 创建的 gif 在尺寸上存在很大差异。
[原始 MP4] - 845KB
Tenor Nano gif- 42KB
ffmpeg gif- 106KB
我们甚至尝试改变抖动算法来进一步减小尺寸,但最终却增加了噪点并损害了 gif 质量。
paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle
我们也尝试过调整 gifsicle 中的颜色量化,但毫无作用
gifsicle --resize _x90 --colors 256 --color-method diversity --dither=ordered --resize-method sample input.gif > output.gif
我们是否遗漏了什么?