相同的动画保存为GIF时,几乎总是比同等内容的MP4大5-20倍。 一个3秒的屏幕录制可能GIF为8MB,而MP4只有400KB。 为什么会有如此巨大的差异?什么时候还应该使用GIF?
为什么GIF这么大
GIF格式于1987年发明,使用一种称为LZW的压缩算法。 它有两个根本性的局限性,使其对动画效率低下:
- 256色限制:GIF每帧只能表示256种颜色。 对于现代有数百万颜色的屏幕录制,需要颜色抖动来处理,这会增加文件大小。
- 没有帧间压缩:GIF中的每一帧都被完整存储, 即使90%的帧与前一帧相同。GIF可以跳过未更改的行,但不能跳过任意更改的区域。
为什么MP4这么小
MP4(使用H.264或H.265编解码器)专为视频设计,使用帧间压缩:
- I帧(关键帧):定期存储的完整帧数据
- P帧和B帧:只存储与前帧/后帧的差异
对于只有鼠标移动的屏幕录制,每帧95%的内容是相同的。 MP4只存储那5%的变化。GIF存储整个帧。这就是为什么差异如此显著。
文件大小对比示例
| 内容 | GIF大小 | MP4大小 | WebP大小 | 比率(GIF/MP4) |
|---|---|---|---|---|
| 3秒鼠标演示 | 8.2 MB | 420 KB | 1.8 MB | 20× |
| 5秒加载动画 | 1.4 MB | 85 KB | 320 KB | 16× |
| 2秒产品展示 | 12 MB | 680 KB | 3.1 MB | 18× |
| 1秒简单图标动画 | 120 KB | 28 KB | 45 KB | 4× |
什么时候还应该使用GIF
GIF仍然有合理的使用场景:
- 邮件客户端:大多数邮件客户端支持GIF但不支持内嵌视频。 对于邮件中的动态内容,GIF是唯一可靠的选项。
- 某些即时通讯应用:WhatsApp、Slack等原生嵌入GIF并自动播放。 MP4可能需要点击才能播放。
- 通用兼容性:GIF无需编解码器支持即可在任何地方使用。
- 短小简单的动画:颜色少的1秒图标动画文件大小差异不那么显著。 对于短小简单的内容,差异比率会缩小。
什么时候应该将GIF转换为MP4
- 在网页中嵌入 — 使用带有autoplay、muted、loop属性的HTML视频元素
- 超过1-2秒的动画
- 包含照片或屏幕内容(多种颜色)的动画
- 页面加载性能很重要时
像GIF一样自动播放、循环的MP4的HTML写法:
<video autoplay loop muted playsinline> <source src="animation.mp4" type="video/mp4"> </video>
将GIF转换为MP4
Picovert的GIF转MP4工具使用WebCodecs 完全在浏览器中将动态GIF转换为MP4或WebM。 无需上传,无需服务器,文件大小仅受设备内存限制。