UltKit

视频转GIF怎么做:尺寸、帧率与循环技巧 | UltKit

把视频转成GIF动图,先选一段两到六秒的画面,把宽度缩放到320–640 px,帧率降到10–15 fps,再让转换器根据这段片段生成256色调色板。这四个选择决定了你得到的是清晰的2 MB循环动图,还是任何聊天软件都不肯接收的30 MB文件。

Mina SatoMina Sato音频与视频编辑
更新于 11 分钟阅读
昏暗房间里,一台放在木箱上的老式电影放映机穿过薄雾投射出明亮的光束

GIF文件到底存了什么

GIF 比网页还要古老。CompuServe 在 1987 年发布了第一个版本 GIF87a,用来通过拨号连接传送静态图片;1989 年的修订版 GIF89a 加入了让动画成为可能的两项功能:每一帧的延迟值,以及一种透明色。循环播放则是 1995 年之后的事,当时 Netscape Navigator 2.0 开始读取一个小型应用扩展块,用来说明重复播放的次数。如今所有动画 GIF 依然是包含这个扩展块的 GIF89a 文件,所以几乎所有浏览器和邮件客户端都能播放。

GIF 内部是一叠索引图像。每一帧都指向一个最多 256 项的颜色表,因此每帧最多只能显示 256 种颜色,尽管原视频有数百万种颜色。像素随后用 LZW 压缩,这是一种无损的字典压缩方法,对单一颜色的平坦区域效果很好,对照片般的噪点、颗粒和渐变则效果很差。LZW 本身不会丢弃任何信息;画质损失发生在更早的一步,也就是数百万种颜色被压缩进调色板的时候。

GIF 还有两样东西无法容纳。它没有任何音轨,视频里的声音会直接消失。它的计时也很粗糙:延迟以百分之一秒为单位保存,而大多数浏览器会把 0 或 1 的延迟当作 10,所以按 50 fps 或更高帧率制作的 GIF 只会播放得更慢,而不是更流畅。实际可用的范围是 10 到 25 fps。

GIF89a 加入了动画
1989
每帧最多颜色数
256
最小延迟步长
1/100 秒
音轨数量
0

GIF为什么会膨胀,以及按什么顺序瘦身

H.264 等现代视频编码只是偶尔存储完整画面,大多数帧只描述相对上一帧的细小变化。GIF 也能做到一点,即只更新上一帧的某个矩形区域,但它没有运动预测之类的机制。镜头一移动,几乎每个像素都会变化,每一帧几乎都要完整存储。所以一段 2 MB 的手机视频可能变成 15 MB 的 GIF,而鼠标在静止窗口上移动的屏幕录制则依然很小。

GIF 的大小大致等于宽乘高再乘帧数,再按画面静止的程度打个折扣。这样各项设置的影响力就很容易排序。时长与帧数一一对应:四秒代替八秒,文件减半。宽度按平方削减像素:从 640 px 降到 320 px,每帧只剩四分之一的像素。帧率同样线性地减少帧数,而 12 fps 对手势和人脸的表现出奇地好。减少颜色的效果比很多人想的要小,通常只有 10% 到 30%,因为 LZW 更看重重复的图案,而不是调色板的大小。

抖动是最让人困惑的取舍。它用相近的调色板颜色打散成点,模拟调色板里缺少的色调,能掩盖天空和皮肤上的色带,却会带来 LZW 难以压缩的细小噪点。屏幕录制、卡通和界面演示本来就是纯色,应关闭抖动;实拍素材则保持开启。裁剪是最后一个手段:去掉静止的边框或黑边,可以在不影响主体的情况下减少像素。

  1. 第 1 步缩短片段每去掉一秒,对应的帧也一并去掉;2–6 秒足以涵盖大多数反应画面。
  2. 第 2 步减小宽度宽度减半,像素只剩四分之一;320–480 px 适合聊天窗口。
  3. 第 3 步降低帧率10–15 fps 能保持动作清晰可辨;8 fps 适合缓慢的屏幕录制。
  4. 第 4 步减少颜色并调整抖动图形用 64–128 色且不抖动;实拍素材用 256 色并开启抖动。

如何选择片段的起点和终点

大多数被分享的 GIF 都只有一个节拍:一个反应、一个进球、一次按钮点击和随后的画面。先把视频看一遍,心里默默计时,记下这个节拍开始的那一秒和明确结束的那一秒,再在两侧各多留几帧,免得循环显得被截断。如果原视频很长,可以先用视频剪切工具截出这一段,再处理这个短文件。在转换器里,直接在开始时间和结束时间中填入秒数或“分:秒”,效果相同,还省去单独的一步。

也要考虑 GIF 从哪里开始播放。许多聊天应用和邮件客户端在文件加载时会先显示第一帧,而 2007 到 2016 版的 Windows 版 Outlook 只显示第一帧,根本不会播放动画。请从一帧作为静态图片也说得通的画面开始,不要选在平移过程中的模糊画面上。如果 GIF 要表达的是一句字幕或一个结果,可以通过延长结束时间把最后一刻停留半秒,让观看者在循环重新开始前读完。

Tip拍摄素材时就要想着做 GIF:手机拿稳,让主体充满画面,避免变焦。同样的设置下,固定机位的画面可能只有手持画面的一半大小。

两只手拿着场记板,上面手写着场次和镜次编号,背景是沙漠天空
照片:Unsplash

Discord、Slack、GIPHY、X和Reddit的GIF大小限制

在任何设置之前,GIF 的去向就决定了大小预算。Discord 在 2024 年把免费账户的上传上限降到每个文件 10 MB,这也是大多数人最先碰到的数字;Nitro Basic 提高到 50 MB,Nitro 提高到 500 MB。GIPHY 接受最长 15 秒、100 MB 的上传。X 接受最大 15 MB 的 GIF,并在上传时把它变成循环播放的视频;Reddit 接受最大 100 MB 的 GIF,但同样以视频形式播放。Slack 接受最大 1 GB 的文件,但自定义表情必须小于 128 KB,这意味着宽度要很小、循环要很短、颜色要很少。

电子邮件是个例外。Gmail 每封邮件允许 25 MB 的附件,Outlook.com 为 20 MB,但嵌入在新闻邮件或签名正文中的 GIF 应远小于 1 MB,这样在移动数据网络下邮件才能很快打开。在聊天中,目标应是上限的一半,而不是刚好卡在上限之下,因为接收者的网络可能很慢。下表数据在 2025 年有效;如果文件正好卡在边缘,请查看对应服务的帮助页面。

截至 2025 年的 GIF 上传限制
发到哪里限制GIF 会怎样处理
Discord 免费账户每个文件 10 MB内嵌播放并循环
Discord Nitro Basic / Nitro50 MB / 500 MB内嵌播放并循环
Slack 消息 / 自定义表情1 GB / 128 KB内嵌播放,除非观看者关闭了动画
GIPHY 上传15 秒,100 MB以 GIF、MP4 和 WebP 多种版本提供
X(Twitter)15 MB转换为无声循环的 MP4
Reddit100 MB转换为视频播放
嵌入电子邮件正文建议小于 1 MBWindows 版 Outlook 2007–2016 只显示第一帧

什么时候MP4、WebM、WebP或APNG比GIF更好

X 自 2014 年起就把每个上传的 GIF 转成 MP4,原因是带宽。同样五秒的内容,做成 GIF 有 4 MB,用 H.264 通常只需几百 KB,而且是完整色彩,不是 256 色,也没有抖动噪点。GIPHY 和 Tenor 也是如此:键盘里的 GIF 按钮通常取回的是小型 MP4 或 WebP。所以真正的问题不是如何做出最好的 GIF,而是你要发布的地方到底需不需要 GIF。

当目的地只能显示图片、不能显示视频时,才保留真正的 GIF:邮件正文、GitHub 的 README 或 issue、Jira 工单、维基、老论坛,以及必须在所有查看器里都能用的幻灯片。凡是能内嵌静音播放视频的地方(大多数社交网络和现代聊天应用),MP4 或 WebM 循环看起来更好,加载也更快。在你自己掌控的网页上,<video autoplay muted loop playsinline> 元素的表现和 GIF 一样,所占字节却只是零头。

还有两种图片格式介于两者之间。Google 的动画 WebP 支持数百万种颜色和有损压缩,自 2020 年的 Safari 14 起可以播放,所以现在所有主流浏览器都支持,不过浏览器之外的许多应用仍然不支持。APNG 在 PNG 的基础上加入了帧,保留完整色彩和真正的 alpha 透明,是 Apple 和 LINE 用于动态贴纸的格式。如果 GIF 已经存在,只是需要为一个能播放视频的网站缩小体积,把 GIF 转回 MP4 通常是最大的单项节省。

到处都能播放

GIF

256 色,无声音,文件大,但在任何地方都能当作图片显示。

  • 邮件正文、README、工单和维基
  • 自动循环,没有播放按钮
  • 四种格式中大小与画质比最差
Best for: 能显示图片但不能显示视频的地方。
体积最小

MP4 或 WebM

完整色彩加运动压缩,体积往往只有十分之一。

  • 可以保留声音
  • 在大多数社交网站上静音自动播放
  • 大多数邮件应用不会内嵌显示
Best for: 社交帖子、聊天应用和你自己掌控的网页。
图片格式

动画 WebP 或 APNG

全彩动画图片;APNG 还支持平滑的透明效果。

  • 所有主流浏览器都支持
  • 桌面应用和邮件中的支持参差不齐
  • APNG 常用于贴纸
Best for: 网站和贴纸包。

视频转GIF的六种方法

手机无需额外应用就能做到。在 iPhone 上,“快捷指令”应用有一个制作 GIF操作,可接受视频或实况照片,而带有“循环”或“来回”效果的实况照片是拍摄素材的快捷方式。三星的“图库”应用在播放视频时会显示 GIF 按钮,可把当前可见的片段录成 GIF。GIPHY 应用及其网页版 GIF Maker 可以在一处完成裁剪、加字幕和上传,但除非只保存,否则结果是公开的。在 Photoshop 中,文件 > 导入 > 视频帧到图层最多可导入 500 帧,导出 > 存储为 Web 所用格式(旧版)则可在写出 GIF 时控制调色板和抖动。

若要完全掌控或批量处理,ffmpeg 的两遍调色板方法效果最干净:第一个滤镜扫描片段,根据实际颜色生成 256 色调色板,第二个把每一帧映射到该调色板上。下面这条单行命令从 0:02 开始截取五秒,缩放到 480 px 宽,采样 12 fps,并无限循环。在浏览器中,视频转GIF转换器做的是同样的调色板步骤,并提供宽度、帧率、颜色和抖动控件,而 MP4转GIF 页面打开时已预先选好 MP4。手机拍的 MOV 视频处理方式相同;如果某个应用不接受,请先读MOV 转 MP4 的方法。

iPhone

  1. 01在快捷指令中依次添加选择照片 → 制作 GIF → 存储到相册。
  2. 02运行后选择视频或实况照片;较长的片段请先在“照片”中裁剪。
  3. 03从“照片”的动画相簿中分享 GIF。

Android

  1. 01在三星图库中打开视频,播放时点按 GIF。
  2. 02拖动两端的手柄,选出需要的片段。
  3. 03点按保存;其他品牌手机请在 Chrome 中使用网页转换器。

桌面端

  1. 01在 Photoshop 中选择文件 > 导入 > 视频帧到图层。
  2. 02在时间轴面板中设置帧延迟,并把循环设为永远。
  3. 03用存储为 Web 所用格式(旧版)导出为 GIF,128–256 色。
ffmpeg:从 0:02 起 5 秒,宽 480 px,12 fps,循环播放
ffmpeg -ss 2 -t 5 -i 视频.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" -loop 0 动图.gif

无缝循环与最后的画质检查

GIF 默认会无限循环,因为 Netscape 扩展里写入的重复次数为零,也就是无限次。把次数设为一,GIF 只播放一遍,并停在最后一帧,适合以一句话收尾的 GIF。更难的是让循环看不出接缝。可以找一段首尾帧几乎一样的画面,比如挥手后回到原位;也可以用往返播放先正放再倒放,这样不会出现跳变,代价是帧数增加一倍。

发送之前,请在浏览器标签页里按实际尺寸打开 GIF,不要只看缩略图,完整看三遍循环。检查画面里的文字在所选宽度下是否清晰,人脸有没有变成色块,节奏是否与视频一致。然后把文件大小与上表中的限制对比;如果很接近,就回到按时长、宽度、帧率、颜色的顺序继续削减。如果是较长的片段或带声音的内容,压缩视频发到 Discord 和邮件是更合适的方式。

  • 天空、阴影和皮肤出现色带

    调色板里的色阶不够用了。保持 256 色,并把抖动切换为 Sierra 或 Floyd–Steinberg;渐变较多的素材可以改发 MP4。

  • GIF 播放速度比视频快或慢

    帧延迟以百分之一秒为单位存储。10、20、25 fps 可以整除;超过 50 fps 的帧率会被浏览器放慢。

  • 画面中的文字看不清

    把宽度提高到 640 px,并相应降低帧率;也可以在转换前先裁剪到有文字的区域。

  • 循环重新开始时有明显跳变

    把开始时间和结束时间移到相互衔接的帧上,或者开启往返播放并把范围缩短一半。

要点速览

  • GIF 每帧最多 256 种颜色,没有音频,帧延迟以百分之一秒为单位。
  • 文件大小取决于时长、宽度和帧率;先按这个顺序削减,再去动颜色。
  • 建议 2–6 秒、320–640 px、10–15 fps;录屏类内容可以关闭抖动。
  • Discord 免费版限 10 MB,X 为 15 MB,GIPHY 为 15 秒和 100 MB,Slack 表情为 128 KB。
  • 在支持内嵌播放视频的地方,MP4 或 WebM 循环比任何 GIF 都更小、画质更好。
分享XFacebookWhatsAppTelegram

常见问题

视频转GIF用多少帧率最好?

大多数片段用 10 到 15 fps。快速的体育或游戏画面可以用 20 fps;缓慢的录屏 8 fps 就足够,文件也会小很多。

GIF动图应该多少秒?

两到六秒基本能涵盖各种反应、演示和精彩片段。超过十秒 GIF 会迅速变大,通常分享一段短 MP4 更合适。

GIF是无损格式吗?

GIF 内部的 LZW 压缩是无损的,但转换过程并非无损,因为视频中的数百万种颜色被缩减为每帧 256 色的调色板。色带和颗粒感就来自这一步。

为什么X会把我的GIF变成视频?

自 2014 年起,X 会把上传的 GIF 转成循环播放的 MP4,因为视频体积小得多,还能保留全部色彩。发布后仍会像 GIF 一样无声循环。

可以把YouTube视频做成GIF吗?

只能使用你设备上有、且有权使用的文件。可以从 YouTube Studio 下载自己上传的视频,或使用原始录像,然后剪切并转换。

GIF和动态WebP有什么区别?

动态 WebP 支持数百万种颜色、有损压缩和平滑透明,所以通常小得多。GIF 的兼容范围更广,包括邮件客户端和不支持 WebP 的旧应用。

继续阅读