目录

录屏转 GIF 文件太大?这样压到 1MB 以内

一、问题:录屏转出来的 GIF 怎么这么大

写文档、提 Issue、做产品介绍的时候,经常要把一小段录屏转成 GIF 贴上去。

GIF 的好处是不用点播放,鼠标一划过就能看到效果。

麻烦在体积。我之前随手找了个在线网站转,一段 10 秒的录屏,转出来居然有 5MB 左右。

这种大小往群里一发,别人加载半天出不来,IM 工具还可能直接给你压成马赛克。

目标很明确:免费、好上手、转出来的 GIF 尽量小,最好控制在 1MB 以内。

二、为什么 GIF 会这么大

先搞清楚原因,后面调参数才有方向。

GIF 的体积主要由这几个因素决定:

  • 帧率(fps):帧越多文件越大。很多录屏是 30fps 甚至 60fps,但 GIF 做演示根本不需要这么流畅。
  • 分辨率:1920×1080 的录屏直接转,体积会爆炸。
  • 时长:每多一秒就多十几帧。
  • 画面复杂度:GIF 每帧最多 256 色,画面变化越剧烈、颜色越杂,压缩率越低。

说白了,在线网站转出来大,多半是因为它默认保留了原始帧率和分辨率,没帮你做减法。

知道这点,下面几种方法本质上都是在动这几个旋钮。

三、方法一:uTools 的 GIF 插件(最省事)

如果你只是偶尔转一下,不想记命令行参数,这个最快。

uTools 是个跨平台的效率工具箱,免费,插件全在里面装。

操作就两步:

  1. 下载安装 uTools,打开后在插件市场搜 gif,安装 GIF 插件。
  2. 唤起 uTools,输入 gif 进插件,把录屏拖进去,选好参数导出。

/img/video-to-gif-smallest-size/1.png
uTools主面板中搜索并选中GIF插件的截图

我自己那段 10 秒录屏,用它适当降了帧率和分辨率,最后压到了不到 1MB,画质看演示完全够用。对非技术的同事来说,这个方案基本零门槛。

它的短板也有:批量转、或者想精细控制每个参数的时候,GUI 就没那么灵活了。

这时候该上命令行了。

四、方法二:ffmpeg(免费、可控、能压到极致)

ffmpeg 是开源的音视频处理瑞士军刀,转 GIF 想压到多小基本都能调出来。

它的关键技巧是 两遍法:先生成一张专属调色板,再用这张调色板转,画质明显比直接转好,体积也更可控。

## 第一步:根据视频内容生成调色板
ffmpeg -i input.mp4 -vf "fps=12,scale=640:-1:flags=lanczos,palettegen" palette.png

## 第二步:用调色板转 GIF
ffmpeg -i input.mp4 -i palette.png \
  -filter_complex "fps=12,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

几个参数解释一下:

  • fps=12:帧率降到 12,演示类录屏基本看不出卡顿,体积能省一大截。觉得不够顺就提到 15。
  • scale=640:-1:宽度缩到 640,高度按比例自动算(-1)。这是压体积最狠的一刀。
  • flags=lanczos:缩放算法,画面更清晰。

我一开始嫌麻烦只用一条命令直接转,结果颜色发灰、噪点一堆。换成两遍法之后画质立马正常了,这步别省。

五、方法三:gifski(画质优先)

如果你对画质要求高,又想保持小体积,gifski 值得一试。它是 Rust 写的开源工具,专门做高质量 GIF,靠的是逐帧选最优调色板。

它不直接吃视频,得先把视频拆成帧(还是用 ffmpeg),再喂给 gifski:

## 先把视频抽成 PNG 帧
ffmpeg -i input.mp4 -vf "fps=12,scale=640:-1" frame%04d.png

## 再用 gifski 合成
gifski -o output.gif --fps 12 --quality 80 frame*.png

--quality 默认 90,调到 80 左右体积和画质比较平衡。gifski 出来的画质通常比 ffmpeg 直转更细腻,代价是步骤多一点、转得稍慢。

六、几种方法怎么选

方法 上手难度 体积控制 画质 适合谁
uTools GIF 插件 很低 偶尔转、不想碰命令行
ffmpeg 两遍法 较好 想精细控制、要批量
gifski 最好 对画质有要求

我现在的习惯:临时贴个图用 uTools,正经放文档里就 ffmpeg 走一遍两遍法。

七、压缩 GIF 的通用思路

不管用哪个工具,想让 GIF 更小,无非动这几个旋钮,按效果排序:

  1. 降分辨率——压体积最有效,宽度砍到 600~800 通常就够看。
  2. 降帧率——10~15fps 对演示足够,别傻乎乎留着 30fps。
  3. 剪时长——前后多余的画面切掉,能短就短。
  4. 减颜色——画面允许的话,调色板从 256 色降到 128 甚至 64。

先动前两个,往往就能从几兆压到 1MB 以内了。

八、常见问题(FAQ)

转出来的 GIF 颜色发灰、有噪点怎么办?

多半是直接单遍转的。

改用 ffmpeg 的两遍法(先 palettegenpaletteuse),用专属调色板,颜色就正常了。

帧率降到多少合适?

演示类录屏 10~15fps 就够,肉眼基本看不出卡。

低于 10fps 才会有明显的顿挫感。

在线工具和 uTools 插件哪个好?

在线工具不用装东西,但很多默认不帮你降参数,转出来偏大,还有上传隐私顾虑。

uTools 插件在本地处理,参数也能调,日常更推荐。

一定要用命令行吗?

不一定。

只是偶尔转,uTools 这类带界面的工具完全够用。

只有在要批量处理、或者想把体积压到极限时,ffmpeg、gifski 才更有优势。

Mac 和 Windows 上都能用吗?

可以。

uTools、ffmpeg、gifski 三者都是跨平台的,Windows、macOS、Linux 都有对应版本。

九、小结

录屏转 GIF 体积大,根子在帧率和分辨率没做减法。

想省事就用 uTools 的 GIF 插件,想压到极致就上 ffmpeg 两遍法,追求画质再考虑 gifski。

如果你有更好用的工具或者更狠的压缩参数,欢迎在评论区交流~~~

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/video-to-gif-smallest-size/

备用原文链接: https://blog.fiveyoboy.com/articles/video-to-gif-smallest-size/