视频工具 · 转 GIF

视频转 GIF

调色板优化/帧率/循环

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 61 次使用
video seek + canvas + gifenc · 本地编码 · 文件永不上传
点击 / 拖拽视频文件到此 本地编码 GIF · MP4 / WebM / MOV / OGG 等浏览器原生格式 local only · nothing uploaded
转换参数encode options
从此刻开始截取
GIF 不宜过长,建议 ≤ 10 秒
跳帧编码,体积约减半,动作略顿

纯前端编码原理:seek 到每一帧 → canvas.drawImage 截取 → getImageData 取像素 → gifenc quantize 取调色板 → applyPalette 索引化 → GIFEncoder.writeFrame 写帧 → finish 得 GIF 字节。 诚实标注:GIF 适合短片段(< 10 秒),长片段 / 高分辨率体积会很大;gifenc 纯前端编码,无服务器、无 CDN。

转换结果encoded gif 尚无 GIF
转换后的 GIF 预览
下载 GIF
选择视频并设置时间段 / 帧率 / 尺寸后点击「转换 GIF」
编码完成后将在此预览,可直接下载
就绪 · 选择视频文件开始本地编码
第一节

关于本工具

About

剪辑到一半发现演示视频里的操作步骤需要循环播放,截成GIF发给同事最直接。上传视频,设定起止时间、帧率和调色板优化策略——调色板优化能减少色彩失真,让动图在文件大小和画质之间取得平衡。转换由服务端FFmpeg处理,适合大文件或长片段,无需等待浏览器完成全部计算。

使用场景

产品演示动效

SaaS 产品经理在给客户做远程演示时,需要展示一个 3 秒的弹窗交互动效。录屏文件 300MB,客户网速慢,等加载时直接挂断电话。用本工具把录屏片段转为 GIF,调色板优化至 256 色、帧率降到 10fps、循环播放 3 次,文件压缩到 2MB,嵌入 PPT 即点即播,演示全程不卡顿。

GitHub 项目预览

独立开发者写了一个 Canvas 粒子动画库,README 里需要放一段运行效果。直接贴视频链接要跳转,用户懒得点;用本工具把 5 秒演示转为 GIF,帧率设为 15fps、循环播放,并启用调色板优化让颜色过渡平滑。文件 1.5MB,GitHub 直接渲染,访客在仓库首页就能看到效果,Star 数一周涨了 200。

客服工单录屏

电商客服收到用户报错截图,描述不清,无法复现。客服用录屏工具录下操作步骤,MP4 文件 50MB,工单系统附件限制 10MB。用本工具把录屏转为 GIF,帧率降到 8fps、调色板优化压缩,文件 3MB,直接上传工单。用户回复说“对,就是那个红框闪了一下”,问题 10 分钟定位。

教学步骤拆解

在线教育老师制作“PS 去水印”教程,视频 3 分钟,学生反馈“太快了跟不上”。老师把关键操作段(选中区域→填充→取消选区)用本工具转为 GIF,帧率 5fps、不循环、调色板优化保留边缘细节。每个 GIF 仅 800KB,嵌入课件页面,学生可以逐帧看鼠标点击位置,课后提问量减少 40%。

社交媒体表情包

短视频创作者在直播回放里截了一段 2 秒的搞笑鬼畜表情,原视频 4K 分辨率 100MB,朋友圈发不了。用本工具截取片段,调色板优化到 128 色、帧率 12fps、循环播放,输出 GIF 仅 500KB。发到微信群后,同事 3 秒内就能看到表情动效,不用等加载,群聊互动率翻倍。

第二节

使用指南

Getting Started

使用步骤

  1. 1拖拽或点击上传区选择视频文件,支持 MP4、MOV、AVI 等常见格式,上传后自动显示视频时长与分辨率
  2. 2在「输出设置」面板调整 GIF 参数:帧率(1-30 fps)、宽度(像素,保持比例)、循环次数(0 为无限循环)
  3. 3勾选「调色板优化」以压缩颜色数量至 256 色,减少文件体积;取消勾选则保留原始色彩但文件更大
  4. 4点击「生成 GIF」按钮,FFmpeg 在服务端处理,进度条显示当前帧转换百分比
  5. 5生成完成后预览区自动播放 GIF,点击「下载」按钮保存到本地,或点「重新生成」调整参数

输入输出示例

输入输出说明
上传一个 10 秒的 MP4 视频,设置输出尺寸 320×240,帧率 10fps,调色板优化开启,循环次数 0(无限循环)一个 10 秒的 GIF 文件,尺寸 320×240,帧率 10fps,共约 100 帧,文件大小约 1.2MB,无限循环播放常规:最常见的视频转 GIF 场景,展示调色板优化(减少颜色抖动)和无限循环的典型输出
上传一个 30 秒的 MOV 视频,设置输出尺寸 640×480,帧率 15fps,调色板优化关闭,循环次数 3一个 30 秒的 GIF 文件,尺寸 640×480,帧率 15fps,共约 450 帧,文件大小约 8.5MB,循环播放 3 次后停止常规:调色板优化关闭时,GIF 颜色更准确但文件更大;循环次数设为有限次,验证循环逻辑
上传一个 0.5 秒的短视频(如手机慢动作片段),设置输出尺寸 100×100,帧率 1fps,调色板优化开启,循环次数 1一个 0.5 秒的 GIF 文件,尺寸 100×100,帧率 1fps,共约 1 帧,文件大小约 15KB,循环播放 1 次后停止边界:极短时长和极小尺寸,测试工具对单帧 GIF 的处理能力,以及帧率与时长匹配是否准确
上传一个 5 分钟的长视频,设置输出尺寸 1920×1080,帧率 30fps,调色板优化开启,循环次数 0工具提示:输出文件大小可能超过 500MB,建议降低分辨率或帧率,或裁剪视频时长。用户可选择继续或取消边界:超大输出(高分辨率+高帧率+长时长),工具应有大小预警或限制,防止浏览器崩溃或内存溢出
上传一个只有 1 帧的静态图片(如 PNG 格式),设置输出尺寸 200×200,帧率 10fps,循环次数 0一个 1 帧的 GIF 文件,尺寸 200×200,持续显示,文件大小约 8KB,无限循环(但无动画效果)边界:输入是静态图而非视频,测试工具是否能正确处理单帧输入,以及输出是否为有效 GIF
上传一个 5 秒的 AVI 视频,设置输出尺寸 800×600,帧率 5fps,调色板优化开启,循环次数 -1工具提示:循环次数必须为非负整数(0 表示无限循环,1 及以上表示有限次数),请重新输入易错:用户可能误输入负数作为循环次数,工具需给出明确错误提示,避免生成无效 GIF
上传一个 3 秒的 WebM 视频,设置输出尺寸 400×300,帧率 12fps,调色板优化关闭,循环次数 0,但视频本身包含透明通道一个 3 秒的 GIF 文件,尺寸 400×300,帧率 12fps,共约 36 帧,文件大小约 600KB,无限循环,但透明区域被填充为白色(GIF 不支持透明通道)易错:用户可能期望保留视频的透明背景,但 GIF 格式本身不支持 Alpha 通道,工具应如实输出并提示

常见错误对照

1.输出 GIF 文件体积过大,远超预期

✗ 错误直接使用原始视频文件,不进行任何参数调整,输出一个 10 秒的 1080p 视频为 GIF
✓ 修复先通过“缩放”功能将视频尺寸缩小到 480p 或更低,再配合“帧率”参数降至 10fps 以下

GIF 格式不支持 24 位真彩色,且压缩效率远低于 H.264/H.265 视频编码。高分辨率、高帧率的视频直接转 GIF 会产生巨大的文件体积,通常几秒的视频就会超过 50MB,不利于网页加载和分享。

2.GIF 颜色失真严重,出现明显色块

✗ 错误将一个包含渐变色、复杂纹理的视频(如游戏画面、电影片段)直接转换为 GIF,未调整调色板
✓ 修复在“调色板优化”选项中选择“自适应调色板”或“全局调色板”,并适当增加颜色数量(如从 128 色提升至 256 色)

GIF 格式最多只能包含 256 种颜色。对于色彩丰富的源视频,默认的调色板算法可能无法准确映射所有颜色,导致颜色断层和色块。使用自适应调色板算法(如 NeuQuant)可以更智能地选择关键颜色,提升画质。

3.循环次数设置错误,GIF 只播放一次

✗ 错误希望制作一个无限循环的加载动画 GIF,但在工具中设置了“循环次数”为 1
✓ 修复将“循环次数”设置为 0(通常表示无限循环),或者选择“永久循环”选项

GIF 规范中,循环次数由 NETSCAPE 2.0 扩展块中的循环计数决定。值为 0 表示无限循环,值为 N 表示循环 N 次后停止。很多工具默认值为 1(只播放一次),这与常见需求(无限循环)相反。

4.截取时间点不准,GIF 开头或结尾多出不需要的内容

✗ 错误想截取视频第 5 秒到第 10 秒的内容,直接输入“开始时间:5,结束时间:10”
✓ 修复先使用视频播放器精确确认关键帧位置,然后输入“开始时间:5.0,结束时间:10.0”或使用更精确的毫秒格式(如 5000ms)

视频编码基于 GOP(图像组),关键帧(I 帧)间隔通常为 1-10 秒。如果指定的开始时间不是关键帧,FFmpeg 会从上一个关键帧开始解码,导致输出 GIF 的开头包含几帧多余内容。指定精确时间点(如 5.0 而非 5)可以减少但无法完全避免此问题,最佳实践是寻找附近的关键帧。

5.帧率设置过高,导致 GIF 播放卡顿或文件过大

✗ 错误将一个 30fps 的视频直接以 30fps 转换为 GIF
✓ 修复将帧率降低至 10-15fps,或根据内容动态调整:静态文字 5fps,简单动画 10fps,快速运动 15fps

人眼对 GIF 的流畅度感知与视频不同。30fps 的 GIF 不仅文件体积巨大,而且由于 GIF 解码和渲染效率低,在浏览器中实际播放时反而可能因丢帧而显得卡顿。降低帧率是平衡文件大小和视觉流畅度的关键。

6.忽略“去交错”处理,输出 GIF 出现横纹

✗ 错误将一个隔行扫描的旧视频源(如 DVD 录像、老式摄像机拍摄)直接转换为 GIF
✓ 修复在转换前,先使用视频处理工具对源视频进行“去交错”处理(如使用 FFmpeg 的 yadif 滤镜),然后再导入本工具

隔行扫描视频的每一帧由两个交错场组成。直接转换为 GIF 时,这两个场会被合并显示,导致画面出现明显的水平条纹(梳齿效应)。本工具未内置自动去交错功能,需要用户预处理。

7.输入了错误的视频格式,工具无法解析

✗ 错误上传一个 .mov 文件,但该文件实际是 Apple ProRes 编码的,或者是损坏的文件
✓ 修复确保上传的视频文件是常见格式(如 MP4、AVI、WebM),并且编码是 H.264 或 H.265。如果转换失败,先用格式工厂等工具将其转码为 H.264 编码的 MP4

本工具后端基于 FFmpeg,虽然支持大量格式,但某些专业编码(如 ProRes、DNxHD)或损坏的文件头会导致解码失败。上传前检查文件编码和完整性是最有效的排错方法。

第三节

工作原理

How It Works

核心公式

GIF 文件大小 ≈ 帧数 × 宽度 × 高度 × 颜色深度位 / 8 × 压缩比

变量说明

  • 帧数视频总帧数 = 时长 × 帧率
  • 宽度输出 GIF 的像素宽度
  • 高度输出 GIF 的像素高度
  • 颜色深度位调色板优化后位数,通常 8 位
  • 压缩比FFmpeg 调色板优化后的压缩系数,约 0.3–0.6

示例

一段 3 秒视频,帧率 10 fps,输出 480×270 像素,8 位颜色深度,压缩比 0.4:帧数 = 3×10 = 30;原始大小 = 30×480×270×8/8 = 30×480×270 = 3,888,000 字节;压缩后 ≈ 3,888,000×0.4 = 1,555,200 字节 ≈ 1.48 MB。

上传视频文件FFmpeg 解码提取帧序列调色板优化帧率 / 循环GIF颜色量化(256 色)抖动算法(Floyd-Steinberg)封装输出
用户输入 FFmpeg 处理 输出结果
第五节

常见问题

Q & A
视频转 GIF 后颜色变得很奇怪,颜色少了,怎么避免?

这是调色板优化(palette optimization)的副作用。FFmpeg 默认会把每一帧的颜色数量压缩到 256 色以内,如果原视频色彩丰富(比如渐变色、动态光效),压缩后会出现色块和噪点。本工具提供「调色板优化」开关,关闭后颜色更准但文件体积会变大。建议:如果原视频是动画/扁平风格,开启优化效果更好;如果是实拍视频,关闭优化更接近原色。

转出来的 GIF 文件太大了,怎么压缩小一点?

GIF 文件大小主要受三个因素影响:分辨率、帧率、时长。本工具支持自定义帧率(默认 10fps),如果原视频是 30fps,降到 15fps 体积直接减半,肉眼差距不大。另外可以降低输出分辨率(比如从 1920 缩到 640 宽)。如果还嫌大,勾选「调色板优化」也能减少颜色数量从而压缩体积。注意:调低帧率会损失流畅度,适合不需要丝滑效果的场景(如表情包、教程步骤截图)。

为什么转换出来的 GIF 不会动,只有一帧?

常见原因是原视频本身就是静态图片格式(比如 JPEG 序列或单帧视频),或者原视频时长极短(小于 1 帧)。本工具基于 FFmpeg 逐帧提取,如果原视频只有 1 帧,输出自然只有一帧。可以先用播放器确认原视频是否有运动画面。另外,检查是否勾选了「循环」选项——如果关闭循环且只输出一帧,某些浏览器可能不播放。建议上传一段至少 2 秒、有运动的视频片段。

上传的视频支持什么格式?MP4 可以吗?

本工具后端使用 FFmpeg 处理,理论上支持 FFmpeg 能解码的所有常见格式:MP4、AVI、MOV、WebM、FLV、MKV 等。实测 MP4(H.264 编码)兼容性最好。如果上传后提示失败,可能是编码格式过于老旧(如 DivX 3)或损坏。建议先用格式工厂或 ffprobe 检查视频编码,确保是 H.264 或 H.265。注意:本工具不支持加密/DRM 保护的视频。

转换后 GIF 一直重复播放,怎么设置只播放一次?

本工具默认开启「循环」开关,输出带循环标记的 GIF,在浏览器中会无限重复。如果需要只播放一次,在界面上找到「循环」选项并关闭即可。关闭后 FFmpeg 会输出不带循环标记的 GIF,播放一次后停在最后一帧。注意:某些旧版浏览器或图片查看器可能忽略该标记,仍然循环,这是客户端行为,工具无法控制。建议在社交媒体上传时,在发布设置里手动关闭循环。

视频转 GIF 会上传到服务器吗?隐私安全吗?

本工具使用服务端 FFmpeg 处理,视频文件会上传到服务器进行转换。处理完成后,文件会在服务器保留 30 分钟后自动删除,不用于任何训练或分析。如果担心隐私,建议不要上传含人脸、证件、密码等敏感信息的视频。未来会推出纯浏览器端的 WASM 方案,届时可完全离线处理,但目前仍为服务端处理。

为什么转出来的 GIF 画面卡顿,不流畅?

GIF 格式本身帧率上限较低(通常 10-20fps 就够用),如果原视频是 60fps 的高帧率视频,默认降采样到 10fps 就会感觉跳跃。可以在帧率设置里手动调高到 15-20fps,但文件体积会随之增大。另外,如果原视频本身就有丢帧或编码问题,转出来的 GIF 也会卡。建议先用播放器检查原视频是否流畅。如果原视频正常,尝试提高帧率的同时保持分辨率不变。

这个工具和在线 GIF 录制器(比如 GIPHY Capture)有什么区别?

本工具是「视频文件 → GIF」,适合处理已录好的视频片段(如教程录屏、影视片段)。GIPHY Capture 之类是「屏幕实时录制 → GIF」,适合抓取即时操作。如果手头已有视频文件,用本工具更直接,无需再录一遍。另外本工具支持帧率、分辨率、调色板等精细参数调节,而录制器通常只有简单裁剪。注意:如果视频时长超过 30 秒,建议先剪短再转换,否则 GIF 体积会非常大。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭