我ffmpeg使用以下命令创建了一个GIF :
ffmpeg -i foo.mp4 -ss 00:00:18 -t 00:00:06 -pix_fmt rgb24 bar.gif
但是,结果bar.gif是超过300 MB的大小,而电影文件foo.mp4大约是15 MB!
是什么赋予了?
对这个问题的全面回答是困难的:-p 简而言之,这归结为每种格式的压缩方式。
在 GIF 动画中,每一帧在概念上都是一个单独的 GIF 图像。然后所有的 GIF 图像都存储在一个大的 GIF 文件中,并带有在帧之间有一定延迟的指令播放帧。要优化帧,您可以通过一个程序运行 GIF,该程序可以删除一帧到下一帧的重复信息(GIMP“动画优化”过滤器是一个很好的方法:GIMP – 简单动画)。
另一方面,像 MP4 这样的视频格式有不同的方法。他们假设帧将是相似的,并且只存储两个帧之间的差异。此外,每帧的数据量仅限于开始压缩时给定的指定视频比特率。执行有损压缩以将视频文件降低到所需的比特率。为了进一步优化视频文件,大多数视频转码器都包含“两遍编码”选项。这会遍历视频两次:第一次它只收集有关文件哪些部分更复杂的信息,第二次它更积极地压缩视频的每个不复杂部分。
作为视频编码过程的一部分,还有许多其他优化是 GIF 文件格式中完全缺失的。此外,值得指出的是,GIF 动画将仅限于 256 色调色板,这可能会导致图像抖动。MP4 对视频帧使用更类似于 JPEG 压缩的东西(尽管有专门针对视频的额外优化……旧的 MJPEG 格式基本上只是一堆 JPEG 图像,就像 GIF 动画是一堆 GIF 图像一样)。
如果您可以提供有关您的特定用例的更多信息,我们或许能够帮助您找到更好的解决方案。
| 归档时间: |
|
| 查看次数: |
6657 次 |
| 最近记录: |