piapia123
zh

视频转 GIF

音视频

所有处理都在浏览器本地完成,数据不上传服务器

把视频拖到这里,或点击选择

MP4 / MOV / WebM · 单个文件不超过 200 MB

把视频的一段做成 GIF。GIF 是 1987 年的格式:每帧最多 256 色、没有帧间压缩,所以同样内容做成 GIF 会有几 MB,而 MP4 只有几百 KB —— 这就是为什么参数必须能调,也是为什么这个工具让你看着预览选范围(拖动播放器到想开始的位置,把时间填进去),而不是凭秒数想象第 7 秒是什么画面。体积的影响因子:宽度是平方关系(从 640 砍到 320,体积大约变成四分之一),时长与帧率是线性关系。想压小就先砍宽度。整个过程在本机完成:解码用浏览器自己的 `<video>`,取帧用 canvas,编码用 JS,视频不会上传。

功能

  • 从视频里截一段转成 GIF,时间范围精确到 0.1 秒
  • 帧率 8–20 fps 可调(10 fps 通常就够)
  • 宽度 320–1280 可调 —— 体积按平方变,砍宽度最有效
  • 颜色数 256 / 128 / 64,掉色与体积自己权衡
  • 可循环播放,也可只播一次
  • 页面上有预览与拖动条,看着选范围
  • 带进度条,编到第几帧一目了然
  • 时间填得比视频还长会自动夹回去并说明
  • 视频不上传、不经过任何服务器,断网也能用

使用方法

  1. 把视频拖进来(先确认浏览器能播放它)
  2. 拖动预览里的播放条,找到想做成 GIF 的那一段,把起止秒数填进选项
  3. 选帧率、宽度与颜色数
  4. 点「开始」,等进度跑完,下载 GIF

常见问题

为什么 GIF 比原视频还大?
因为 GIF 几乎没有压缩:每帧都是完整的 256 色位图,帧间只做最弱的 LZW 压缩,而视频格式会用帧间预测(只存"这一块往右移了 3 像素"这种差异)。所以一段 2 秒的 1080p 视频做成 GIF 可以到 20 MB。要压小做三件事,按效果排序:把宽度砍半(体积约变四分之一)、缩短时长、把帧率降到 10 fps。颜色从 256 降到 128 只省一成左右,效果最弱。
导出的 GIF 卡顿、有几帧是重复的?
常见原因是浏览器的精确定位不一定精确:某些格式(尤其是没有索引的 MP4、部分 MOV)只能定位到关键帧,取第 3.2 秒的画面时给的可能还是第 3 秒那一帧。表现是"有几帧停住不动"。可以先用播放器把视频转成标准的 H.264 MP4(多数视频软件都会写索引),定位就会准。另外帧率低于 8 fps 本身就会显得卡,那是参数问题不是 bug。
视频拖进来是黑屏,也没有报错?
这说明浏览器解不开它的编码。最常见的是 HEVC / H.265(新一点的 iPhone 默认用它录)与 AV1,此外损坏的文件也会这样。工具会在预览区说清这一点,而不是给你一个一直转的进度条。解决办法:用播放器或系统自带的导出功能转成 H.264 的 MP4(也叫 AVC),再拖进来。
视频会上传吗?
不会。解码用浏览器自己的 `<video>` 元素,取帧用 canvas,编码用本地的 JS 库,全程没有网络请求,断网也能用。用户拖进来的常是手机里的私人视频 —— 会议录屏、家人录像、客户的演示 —— 它们不应该经过任何服务器。

相关工具