把 2.1MB 的 GIF 转成 WebP 动图,输出 5.3MB,页面加载更慢了。quality 设的 80,method 6,帧率和尺寸都没变。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,GIF 只有 256 色,转成 WebP 后每帧按真彩编码,颜色精度上去了体积也上去了。没有开启帧间差分,每帧都存完整画面。quality 80 对动图来说偏高。

「动图压缩体积变大」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。报错里带路径的,先去看那个路径在不在、权限对不对。

ffmpeg -i in.gif -vf "fps=12,scale=480:-1:flags=lanczos" -c:v libwebp_anim -lossless 0 -q:v 60 -loop 0 out.webp
ls -lh in.gif out.webp

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,把 quality 降到 60 左右先看体积;开启帧差分 只存变化区域;减少颜色数或抽帧 动图 12fps 通常够用;和原 GIF 并排比体积与观感 取平衡点。

最后用这个标准收尾,输出 WebP 体积降到 1.6MB 以下,播放流畅,和原 GIF 对比肉眼无明显色块。

作者 9823189