在线视频转GIF工具
将视频片段转换为动画GIF。自定义开始时间、时长、帧率和宽度。所有处理都在您的浏览器中进行,文件不会上传到服务器。
将视频拖放到此处
或点击选择视频文件
视频转 GIF 转换究竟做了什么
把视频转为 GIF 涉及三种同步变换:帧提取(视频的连续时间线以固定速率采样,通常 10 至 24 fps),调色板量化(每帧从 1600 万种颜色减少到选定调色板中最多 256 种,因为 GIF 每帧只能存 256 色),以及 LZW 压缩(用 GIF 自 1987 年起就使用的同一无损算法压缩索引调色板帧)。结果是一个包含所有帧、调色板和时序信息的单一文件,可在任何支持 GIF 的设备上播放(这基本上是过去 30 年内制造的每个设备)。
调色板步骤是质量得失之所在。朴素的单调色板方法挑选 256 种颜色来近似整个剪辑,这对灰度内容有效,但在色彩丰富的素材上失败(肤色出现色带,渐变出现色阶)。本工具使用的两遍调色板方法先运行 FFmpeg 的 palettegen 滤镜分析每一帧并构建优化的 256 色调色板,然后运行 paletteuse 加抖动把每帧每个像素映射到最近的调色板颜色。结果是在相同文件大小下质量显著更好,尤其是在面孔、夕阳和高色彩内容上。
GIF 压缩效率比起现代视频差很多。5 秒的 480p 短片在相同尺寸下作为 MP4(H.264)可能 500 KB,但作为 GIF 是 8 至 15 MB。这是格式的基本问题,不是编码器:1987 年的 LZW 无法与 H.264 或 VP9 竞争。要让 GIF 变小,有三个杠杆:降低帧率(10 fps 对比 24 fps 大约减半大小)、缩小尺寸(480px 宽对比 800px 宽超过 2 倍小)、缩短时长(5 秒对比 10 秒正好一半)。三者都在本工具中作为控件暴露。
本工具的工作原理
与其他视频工具相同的 ffmpeg.wasm 引擎:通过 Emscripten 编译为 WebAssembly 的 FFmpeg,约 30 MB 浏览器侧二进制,通过 SharedArrayBuffer 多线程完全在标签内运行。当您拖入视频时,文件通过流式读取器读入 WebAssembly 虚拟文件系统。
两遍转换作为两次独立的 FFmpeg 调用运行。第一遍:-i input.mp4 -ss 0 -t 5 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png。这裁剪到所选范围,以目标帧率采样,用 Lanczos 滤波缩放到目标宽度,并生成优化的调色板。第二遍:-i input.mp4 -i palette.png -ss 0 -t 5 -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse=dither=bayer:bayer_scale=5" output.gif。这应用相同的裁剪/fps/缩放然后用 Bayer 抖动把每帧的像素映射到调色板以获得更平滑的渐变。
Bayer 抖动模式是一个确定性的 8x8 有序抖动矩阵,把量化误差分布到邻近像素上,让色带不那么明显,代价是淡淡的交叉纹理。其他抖动模式(Floyd-Steinberg、Sierra)产生更平滑的结果,但代价是文件大小略大。进度消息从 FFmpeg 的 stderr 流出并实时更新屏幕上的进度条。生成的 GIF 在内存中构建,并通过浏览器的 blob API 提供下载。
GIF 格式简史
- GIF87a,1987 年。CompuServe 推出 GIF(Graphics Interchange Format)用于在拨号调制解调器上传输图像。该格式使用 LZW 压缩,每图像 256 色调色板,并支持交织。该初始版本仅支持静态图像。
- GIF89a 添加动画,1989 年。更新的规范添加了帧延迟、透明度和动画。GIF 现在可以包含多帧带时序信息,启用循环短片。这成为您见过的每个动画 GIF 的基础。
- Unisys LZW 专利纠纷,1994 年。Unisys 宣布将强制执行其 LZW 专利,包括对 GIF 编码器。网络社区以 PNG 格式(1996)和 Burn All GIFs Day(1999)回应。LZW 专利最终在 2003 年全球范围内到期;GIF 对所有人成为合法自由。
- GIF 被宣告死亡,然后复活,2000 年代末。静态 GIF 大多被 PNG 取代;YouTube 和 Flash 主导动画内容。然后 Tumblr(2007)、Reddit 和 ImgUr(2009)让动画 GIF 成为反应、表情包和短循环的事实格式。尽管技术上已过时,GIF 再次变得普遍。
- GIFV 和 APNG 尝试竞争,2014 至 2020 年。ImgUr 的 GIFV(带 .gifv 扩展名的 MP4)和 APNG 格式(动画 PNG)试图用更小、更高质量的替代品取代 GIF。两者都见到小众采用,但 GIF 因其数十年的兼容性仍然是通用共享格式。
- 浏览器侧转换成熟,2019 至 2026 年。Jerome Wu 在 2019 年发布第一个 ffmpeg.wasm。到 2024 年 4.x 系列稳定在约 30 MB,支持 SharedArrayBuffer 多线程。带两遍调色板生成的浏览器侧视频转 GIF 转换变得实用,消除了对云服务的需要。
如何将视频转换为GIF
- 加载视频拖放或点击选择视频文件。
- 设置范围和质量选择开始时间、时长、FPS和宽度,以平衡文件大小和质量。
- 转换并下载生成GIF并保存到您的设备。
为什么要将视频转换为GIF
GIF便于在文档、社交媒体、支持工单和通讯应用中分享,它们自动播放和循环播放,无需音频即可传达信息。它们非常适合教程、演示和趣味动画,并且几乎在所有平台上都能运行。
主要功能
- 精确修剪设置精确的开始时间和时长,将视频的准确范围转换为GIF。
- 帧率控制微调FPS(从5到30),以平衡流畅度和文件大小。
- 自定义宽度选择输出GIF的宽度,高度会自动调整以保持宽高比。
- 快速处理借助浏览器的力量即时转换,无需等待时间或文件上传。
- 完全隐私保护视频不会离开您的设备。所有处理都在本地进行。
真实世界的 GIF 转换工作流
- 反应 GIF 和表情包创作。经典用例:从电影、节目或录音中捕获 2 至 4 秒的剪辑,转换为 240 至 480px 宽的 GIF,10 至 15 fps。生成的文件足够小可附加到聊天(少于 5 MB)且可识别。Twitter、Discord、Slack、iMessage 都直接接受 GIF。
- 文档和教程。软件文档使用循环 GIF 来演示 UI 流程、动画或功能行为。在 README 或文档页面中嵌入的「点击这里,然后这件事发生」的 5 秒屏幕录制 GIF 比静态截图或需要点击播放的单独视频文件更易消化。
- 错误报告和问题跟踪。GitHub Issues、GitLab、Linear 和 Jira 都支持内联 GIF 嵌入。录制 UI 错误的 3 秒短片并把 GIF 粘贴到问题中给审阅者一个立即的上下文,这是一段文字无法匹配的。比附加视频文件更小更通用。
- 社交媒体微内容。Tumblr、Twitter 和 Reddit 都在时间线上自动循环 GIF。一段较长视频中有趣时刻的 2 至 4 秒循环比完整剪辑获得更多互动,因为用户无需点击就能看到。把 GIF 保持在 8 MB 以下确保它到处自动播放。
- 电子邮件签名和营销。动画电子邮件签名、节日问候和产品预告使用 GIF,因为没有其他格式能在电子邮件客户端中自动播放。把文件大小保持在 1 MB 以下以与大多数电子邮件提供商兼容;Gmail 在某些视图中会剥离较大 GIF 的动画。
- 循环影动图和动态静帧。影动图(cinemagraph)是一张大部分静止的图像,仅有一个区域有微妙运动。从视频中提取 2 秒的循环,可选地将静止部分蒙版,创建一个吸引眼球的共享格式。无缝循环要求第一帧和最后一帧对齐;您经常手动修剪以找到干净的循环点。
常见陷阱及其含义
- 文件大小很快爆炸。GIF 远不如现代视频编解码器高效。10 秒 720p 24fps 短片作为 GIF 可能 15 至 30 MB,但作为 MP4 只有 1 至 2 MB。策略:降低帧率(对大多数内容,10 fps 读起来和 15 一样流畅)、减小尺寸(480px 宽是良好的折中)、严格裁剪时长(每多一秒按比例增加大小)。
- 差的调色板毁掉质量。朴素的单遍 GIF 生成会选取它遇到的前 256 种颜色或通用的 Web Safe 调色板。结果:肤色色带、渐变色阶、灰色脏污。本工具默认使用两遍
palettegen/paletteuse,它在选择最优调色板前分析所有帧。在相同文件大小下质量大大更好。 - 高动态内容显示伪影。快速摄像机平移或场景切换可能显示调色板闪烁(帧间颜色偏移),因为每帧的调色板无法很好地跟踪突然的色相变化。对高动态内容,使用更高的抖动设置或接受低动态内容(脱口秀、简单动画)转换得比高动态(运动、动作场景)更好。
- GIF 不能携带音频。GIF 格式没有音频支持。如果您的源视频有语音或音乐,那个音频在转换过程中被悄悄丢弃。对携带音频的剪辑,请使用 MP4(带音频)或转换为静音 webp/MP4 配单独的音频轨道。
- 循环不会自动衔接。完美的无缝循环要求 GIF 的最后一帧在视觉上与第一帧匹配。没有手动对齐,您会在循环点看到可见的跳跃。要获得无缝结果,请修剪有自然运动对称的剪辑(钟摆、波浪、重复手势),或使用桌面视频工具设计淡入淡出过渡。
- 透明度是二进制的,不是部分的。GIF 支持透明度,但每像素全有或全无(1 位)。您不能有半透明区域、平滑 alpha 边缘或淡入透明效果。对带平滑 alpha 的透明动画内容,请使用 APNG 或 WebP 动画;对单次共享的完整 alpha,请使用透明 PNG 序列。
隐私:您的视频从不离开您的设备
云视频转 GIF 服务(Giphy 的上传转换器、ezgif.com、Convertio 等数十个)都上传您的完整视频,在他们的硬件上运行 FFmpeg,并发回生成的 GIF。一段 200 MB 的手机视频通过他们的基础设施意味着 200 MB 上传加 5 至 30 MB 下载。视频内容常包含面孔、地点、对话音频(GIF 会丢弃但运营商仍持有)、私人界面的屏幕录制。大多数运营商发布隐私政策,承诺在 1 至 24 小时内删除上传并在传输中加密,大型运营商持有 ISO/IEC 27001 认证。他们有强烈的商业动机来履行这些政策。但「一小时内删除」不等于「从未被看见」。在那个窗口里文件就在运营商基础设施上,对任何拥有正确权限的进程或人员可访问,并按运营商保留政策出现在日志和备份中。
本工具从不上传任何内容。完整流水线(文件选择、通过浏览器原生读取器解码、通过 ffmpeg.wasm WebAssembly 进行调色板生成和 GIF 编码、通过浏览器 blob API 下载)在您的浏览器标签内运行。没有上传,没有携带视频数据的网络请求,没有日志条目。您可以在转换前打开浏览器开发工具的「网络」标签来验证:没有任何带视频内容的请求离开。只有页面本身的初始加载和 ffmpeg.wasm 约 30 MB 的一次性下载(后续访问缓存)会触及网络。页面加载后把浏览器切到飞行模式,转换器仍能在本地文件上工作。
何时另一个工具才是正确选择
- 对现代网页用途,MP4 或 WebP 击败 GIF。在 2026 年的网络上,带 autoplay+loop+muted 属性的 MP4 文件或动画 WebP 文件提供相同的循环体验,文件大小是分数,颜色保真度更好。Twitter、Reddit、Discord 和大多数现代平台直接接受 MP4。仅在您特别需要通用 GIF 格式时使用 GIF(电子邮件、非常旧的系统、某些聊天客户端)。
- 超过 2 GB 的文件。约 2 GB 以上浏览器内存限制成为墙。请使用桌面 FFmpeg CLI,它能从磁盘流式读取并使用所有可用系统 RAM。
- 影动图和高级 GIF 工艺。对蒙版运动(仅 GIF 的一部分动画化而其余保持静止),请使用 Photoshop 的动画 GIF 工作流、Plotagraph Pro 或 Cinemagraph Pro。这些提供本工具的自动化流水线无法的逐区域蒙版和动画控制。
- 批量 GIF 生成。使用 FFmpeg CLI 的 shell 脚本处理多个文件:
for f in *.mp4; do ffmpeg -i "$f" -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" "${f%.mp4}.gif"; done。一个滤镜图中的一次性调色板生成;比 100 次手动浏览器运行快得多。
常见问题
最大视频文件大小是多少?
由于处理在浏览器内存中进行,这取决于您设备的性能,但较短的片段(少于10秒)转换效果最好。
支持哪些视频格式?
我们支持浏览器支持的所有主要视频格式,包括MP4、WebM、MOV和AVI。
生成的GIF会包含声音吗?
不会,GIF根据其规范不支持音频,因此转换后的GIF将是静音的。
其他常见问题
我应该使用什么帧率?
10 至 15 fps 是大多数 GIF 的甜点:流畅到可读为运动,小到保持文件大小可管理。24 fps 给出更流畅的运动,但与 12 fps 相比大约把文件大小翻倍。5 fps 适合慢内容(脱口秀、慢演示)并最小化大小。人眼在 10 fps 及以上感知运动;以下看起来像幻灯片。
为什么我的 GIF 与视频相比看起来有色带?
GIF 每帧只存 256 色,视频中有 1600 万色。平滑渐变(天空、肤色、夕阳)被色带成可见台阶。本工具使用的两遍调色板方法相比朴素的单遍转换显著减少了这一点,但无法完全消除色带。要获得最佳结果,对比强烈、平滑渐变少的源内容转换干净;富含平滑渐变的内容即使在最佳调色板下也保持不完美。
我应该用 MP4 替代 GIF 吗?
通常是。带 autoplay+loop+muted 的 MP4 在文件大小小 5 至 10 倍的同时给出相同的循环体验,并具有完整的 1600 万色保真度。问题:并非每个平台都像支持 GIF 那样支持内联 MP4 循环。Twitter、Reddit、Discord、GitHub Issues 和大多数现代网站支持;某些遗留电子邮件客户端、聊天应用和论坛只支持 GIF。如果您的目标受众使用现代平台,请选择 MP4;为了最大兼容性,请选择 GIF。
为什么第二遍比第一遍慢?
第一遍(palettegen)只分析颜色统计;它不写最终输出,只构建 256 色调色板。第二遍(paletteuse)实际把每帧每个像素映射到最近的调色板颜色,应用抖动,并编码 GIF 流。像素映射步骤是花费最多 CPU 时间的部分,尤其在启用抖动时。对 5 秒 480p 10fps GIF,期望根据您的 CPU 总处理时间 5 至 30 秒。
有桌面或命令行的等效工具吗?
有。FFmpeg CLI 是正典工具,使用相同的两遍方法:ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png 然后 ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif。Gifski 是一个基于 Rust 的工具,使用每帧调色板产生比 FFmpeg 更高质量的 GIF(文件更大,质量更好)。Photoshop 的 Save for Web (Legacy) 用于 GIF 是图形设计师的经典 GUI 工作流。
GIF 支持透明度吗?
支持,但只是二进制(1 位)透明度:每个像素要么完全不透明要么完全透明,没有部分 alpha。这就是为什么边缘平滑的 GIF 标志和图标在不同背景下看起来「锯齿状」。对于平滑 alpha 混合动画,请使用 APNG(动画 PNG)或动画 WebP,两者都支持每像素 8 位 alpha。本工具的输出默认不保留源透明度;如果您的视频有透明区域,它们会用选定的背景颜色填充。