【发布时间】:2023-11-01 22:17:01
【问题描述】:
我们在博客中广泛使用 GIF。我们曾经在其中嵌入了 Tenor nano gif(90px 高度保持纵横比,用于 GIF 预览和移动共享)。现在我们想创建自己的 gif,并使用以下命令将 mp4 转换为 gif,同时保持 Tenor 的 nano gif 的属性。使用 ffmpeg 版本 4.1.4
但我们观察到我们创建的 gif 和使用 Tenor 创建的 gif 之间存在巨大差异。
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
[原版 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
【问题讨论】:
-
对 gif 的所有帧应用相同的颜色映射。还要尽可能减少颜色的数量。
-
能否也附上MP4原版?
标签: ffmpeg compression imagemagick gif lossless-compression