无需上传、100% 本地处理、无需账户

视频转 GIF

将短片转换为循环 GIF。选择帧率和宽度,一切都在浏览器中运行。

视频转 GIF 的工作原理

使用 ffmpeg WebAssembly 直接在浏览器中将视频片段转换为动态 GIF。转换使用两次遍历的调色板优化方法:第一次遍历运行 palettegen 滤镜,为你的特定素材构建 256 色调色板;第二次遍历运行 paletteuse 将每一帧映射到该调色板。结果比简单的单次遍历转换具有更好的颜色保真度,后者往往在渐变和肤色上产生明显的色带。

GIF 是一种较旧的格式,硬上限为 256 色,因此具有丰富渐变、电影色彩分级或快速相机运动的素材总会显示一些颜色限制。此工具最适合短循环、反应片段、教程精华和表情包,这些都是 GIF 是预期格式的场景。文件大小随分辨率和帧率快速增长,因此将片段修剪到必要的秒数,并将输出宽度保持在 480-640 像素左右以获得可管理的结果。

视频转 GIF 的分步使用说明

  1. 拖入或选择你要转换的视频片段。
  2. 如果只想要视频的一个片段,设置时间范围。
  3. 选择输出宽度(像素,越小文件越小)和帧率(10-15 fps 通常足够流畅)。
  4. 点击「转换为 GIF」在你的设备上启动两次遍历的 palettegen/paletteuse 管道。
  5. ffmpeg 完成后下载动态 GIF。

常见使用场景

  • 从短喜剧片段创建循环反应 GIF,发布到聊天应用程序。
  • 将 3 秒 UI 动画原型转换为 GIF,嵌入到 GitHub issue 或设计评审评论中。
  • 为 README 或文档页面生成产品功能预览 GIF。
  • 从屏幕录制制作短教程精华循环,用于博客文章。

常见问题

为什么即使使用调色板优化,我的 GIF 仍然显示色带?

无论优化方法如何,GIF 每帧限制为 256 色。palettegen/paletteuse 两次遍历方法尽可能接近源颜色,但具有平滑渐变、HDR 色调或多种色相的素材仍会显示明显的量化失真。减小帧大小减少了每帧不同颜色的数量,通常会改善结果。

我的视频是上传到服务器才转换为 GIF 的吗?

不是。palettegen 和 paletteuse 两个 ffmpeg 滤镜遍历都通过 WebAssembly 在你的浏览器标签页内运行。你的视频被读入本地内存,调色板在那里计算,GIF 在你的设备上写入,然后作为下载提供。没有任何内容离开你的机器。

如何保持 GIF 文件大小合理?

三个设置控制 GIF 大小:输出宽度(每个像素行按比例计费)、帧率(每秒帧数越少,总帧数越少)和片段持续时间(每增加一秒就会成倍增加帧数)。480 像素宽、12 fps、4 秒的 GIF 是 5 MB 以内可分享片段的典型起点。

GIF 会永久循环还是只播放一次?

ffmpeg.wasm 默认将 GIF 写入设置为无限循环的 NETSCAPE 循环扩展。每个支持动态 GIF 的现代浏览器、消息应用程序和图像查看器都会持续循环它。这是烘焙到文件中的属性,不像 MP4 循环那样依赖播放器。

可以将 WebM 或 MKV 转换为 GIF,而不仅仅是 MP4 吗?

可以。ffmpeg.wasm 读取它可以解复用的任何容器,包括 WebM、MKV、MOV 和 AVI。无论输入容器如何,输出始终是动态 GIF。

为什么长时间或高分辨率的转换需要这么长时间?

两次遍历调色板方法解码每一帧两次:一次构建调色板,一次量化像素。对于 24 fps、10 秒、1080p 的片段,这是 480 帧通过 WebAssembly 解码两次,没有 GPU 加速。减少片段持续时间、帧率和输出分辨率是加速转换最有效的三种方式。

可以在手机上把视频做成 GIF 吗?

可以,前提是片段较短、宽度适中。两次遍历的调色板处理比简单的流复制更耗资源,因此在手机上请把片段控制在几秒钟以内,宽度保持在 320 到 480 像素左右;时长长、宽度大、帧率高的素材更适合在电脑上转换。