无需上传, 100% 本地处理, 无需账户

文章

为什么 GIF 体积这么大

一个三秒钟的动图 GIF,体积经常会超过覆盖同样内容的一整分钟 MP4 视频,这会让任何习惯认为视频才是更重格式的人感到意外。GIF 从一开始就不是为了高效存储动态画面而设计的;它是一个 1987 年的图像格式,只是恰好支持一系列帧,它背后的每一项设计选择,都比现代视频压缩技术早了几十年。

GIF 是一系列图像,而不是一段视频流

图形交换格式(GIF)由 CompuServe 于 1987 年推出,1989 年修订为 GIF89a,它把一段动画存储为一系列按顺序播放的独立图像帧,每一帧都是各自压缩的静态图片。像 H.264 这样真正的视频编码,会把大多数帧编码为与前一帧的差异,因为连续的视频帧通常非常相似,只存储发生变化的部分。GIF 没有类似的机制:即便画面大部分是静止的,每一帧的大部分内容也都会被重新存储一遍。

对比示意图:GIF 每一帧都存储一张完整独立的图像,而视频编码大多数帧只存储与前一帧的差异

无论原始素材是否需要,都只有 256 种颜色

GIF 把每一帧都限制在最多 256 色的调色板内,这个调色板是从照片或视频实际包含的、大得多的色彩范围中挑选出来的。一段带有平滑渐变和光影的屏幕录像或视频片段,被压缩进这个有限的调色板后,会出现明显的色带和抖动噪点,而且文件仍然要在每一帧都完整存储一遍这种降色后的数据,没有跨帧压缩可以依靠。

色板对比:256 色的 GIF 调色板,与原始照片或视频素材的完整色彩范围并列

为什么这个格式从未被现代替代品取代

GIF 的循环播放特性和通用支持,也就是每个浏览器和聊天应用都无需插件就能播放它,让它在更好的选择出现很久之后依然被持续使用,就像更高效的音频编码问世后 MP3 依然长盛不衰一样。WebP 和 APNG 都支持带有真正逐帧压缩和多得多颜色数的动画,对同样的内容能生成明显更小的文件,但两者都没有达到 GIF 在所有平台和分享场景中那种普遍支持的程度,所以尽管 GIF 是存储短循环动画效率最低的方式,它依然是默认选择。

同样内容的 MP4,通常体积会小得多

把同一段短片用 H.264 转换成 MP4,能保留视频编码的帧间差异压缩和完整色彩范围,这就是为什么对相同内容和时长而言,MP4 文件的体积通常只是等效 GIF 的一小部分。代价是 MP4 需要一个视频播放器,而不能像 GIF 那样在任何地方都以图片形式内嵌显示,不过大多数现代聊天应用和社交平台,已经会像播放 GIF 一样自动播放一段短 MP4。

在不上传任何内容的情况下,在 GIF 和视频之间转换

我们的 GIF 转视频工具能把动图 GIF 重新编码成紧凑的 MP4,而当你确实需要一个真正的 GIF(比如某个场景就是要求这种格式)时,视频转 GIF 工具能反向完成这个转换,两者都完全通过编译成 WebAssembly 的 ffmpeg,在你的浏览器中运行。先把一个体积沉重的现有 GIF 转换成 MP4,只在少数真正需要这个格式的场合才退回使用 GIF,通常是在不丢失循环播放效果的前提下,缩小一段分享动画文件体积最快的方法。

本文涉及的工具

常见问题

为什么一个短小的 GIF,体积会比一段长得多的 MP4 视频还大?

GIF 会独立地重新存储每一帧的大部分内容,没有跨帧压缩,并且限制在 256 色以内;而 MP4 只把大多数帧编码为与前一帧的差异,并保留多得多的色彩细节。GIF 格式每一帧的开销累积得很快,即便是一段长度只有视频一小部分的短片也是如此。

不转换成视频,我能让 GIF 变小吗?

可以,但有限度:降低帧率、缩小像素尺寸,或者剪短片段,都能直接减小 GIF 的体积,因为更少或更小的帧意味着需要存储的数据更少。但这些都不会改变这个格式根本缺乏跨帧压缩的问题,这也是为什么转换成 MP4 通常比单纯剪短 GIF 能节省得多。

MP4 会像 GIF 那样自动循环播放吗?

大多数聊天应用和社交平台,会像处理 GIF 一样,自动播放并循环一段内嵌的短 MP4,所以对观看者来说,视觉效果通常是一样的。但在那些只显示原始图片标签、不支持视频播放器的场合,比如某些邮件和较老的论坛软件,仍然需要一份真正的 GIF 文件。

来源