点击选择文件,或拖拽到此处
单个视频文件,MP4 / WebM 支持最好,本地处理不上传从视频的第几秒开始截取。
GIF 越长越大,2~4 秒最合适;上限 12 秒。
8 帧够流畅且体积可控;动作快可以提到 12。
宽度是体积的第一影响因素:320 发微信刚好,480 更清楚。
表情包选无限循环;教程演示可选播放一次。
色数越少体积越小,但渐变可能出现色带。
色数少时开抖动能缓解色块,但会略微增大体积。
上传视频,右侧显示转换结果。
想让 GIF 变小,按顺序调这三个。
| 参数 | 对体积影响 | 建议 |
|---|---|---|
| 输出宽度 | 最大(面积级) | 320 → 240 立竿见影 |
| 时长 | 很大(帧数线性) | 控制在 2~4 秒 |
| 帧率 | 中等 | 8 帧足够,别超 12 |
| 色数 / 抖动 | 较小 | 256 色 + 抖动即可 |
先想清楚用在哪,再定参数。
| 用途 | 时长 / 帧率 | 宽度 / 循环 |
|---|---|---|
| 微信表情包 | 2~3 秒 / 8~10 | 240~320 · 无限循环 |
| 教程演示 | 4~6 秒 / 6~8 | 480 · 循环 |
| 网页装饰 | 3~4 秒 / 8 | 320 · 无限循环 |
| 汇报 PPT | 3~5 秒 / 8 | 480 · 播放一次 |
⚠️ 本工具在浏览器本地完成解码、抽帧与 GIF 编码,不会把你的视频上传到任何服务器。
能否转换取决于浏览器是否支持该视频的编码格式:MP4(H.264)、WebM(VP8/VP9)通常没问题,MOV、AVI、RMVB 等格式常因浏览器无法解码而失败;受 DRM 保护的视频无法处理。
GIF 格式本身只有 256 色,色彩丰富的画面会出现色带或噪点,长视频转换耗时较长,请保持页面打开等待进度完成。
群里发个搞笑片段、给文档配个操作演示、把视频切成表情包——都要"转成 GIF",但装软件太重、在线工具又要上传。
这个工具就解决这一件事:上传视频,选一段,本地抽帧编码成 GIF 下载。
它是怎么做的?
① 浏览器解码:用 <video> 元素解码(MP4 / WebM 支持最好);
② 逐帧抽取:按你设定的帧率定位时间点,把画面画到 Canvas 上取样;
③ 本地编码:用自研的 GIF89a 编码器(中位切分调色板 + 抖动 + LZW)合成动图——没有引入 30MB 的 ffmpeg.wasm;
④ 参数可控:起止时间、帧率、宽度、循环、色数、抖动都能调。
体积由什么决定(按影响力排序):
· 宽度(面积级,320 → 240 立竿见影);
· 时长(帧数线性增长,2~4 秒最合适);
· 帧率(8 帧足够);
· 色数与抖动(影响较小)。
必须说清的边界:格式支持取决于浏览器解码能力,MOV / AVI / RMVB 常失败;GIF 只有 256 色,色彩丰富的画面会有色带。
处理流程:
① 载入视频:用 video 元素本地解码,读取时长与分辨率;
② 算时间点:按开始时间 + 时长 + 帧率算出每帧的时间点;
③ 逐帧抽取:定位到时间点 → 绘制到 Canvas → 取像素;
④ 编码:用内置 GIF89a 编码器(中位切分调色板 + Bayer 抖动 + LZW)合成;
⑤ 导出:生成 Blob 供预览与下载。
它不做:不做转码(不支持的格式无法处理)、不加文字水印、不压缩已有 GIF。格式支持取决于浏览器解码能力。
审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!