为了回答这个问题,我下载了视频:
下载为“3Uyndrm.mp4”,4,762 kB
在 Windows 11 中,我使用“文件资源管理器”>“详细信息”来查看其属性:
在这些数据中,Data rate
是视频比特率,
Total bitrate
= 音频Bit rate
+ 视频Data rate
通过根据这些数字计算文件的大小可以确认这一点:
File size = 1,765,000 bits/sec * 22 second / 8 / 1024 = 4,740 kB
但我对这些数字有些不明白。
我们可以计算视频中每秒的像素数:
(854 * 480) pixels/frame * 30 frames/sec = 12,297,600 pixels/sec
由此,我们可以得到每个像素的视频位数:
1,635,000 bits per sec / 12,297,600 pixels/sec / 8 = 0.017 byte/pixel
这有道理吗?这意味着视频数据只是每帧中每个像素一个字节的一小部分。我本以为每个像素的颜色值至少需要三个字节。将其从 3 减少到 0.017 的压缩率将超过 99%,这比我听说过的任何压缩比都要大。
我的计算有问题吗?
根据视频的不同,他们可以拥有一个主帧,该主帧本质上是类似于 JPEG 的有损格式的压缩图像。这是
i-frame
包含实际图像数据的。JPEG 已经达到了 10:1 的压缩率,并且质量损失最小,较新的视频编解码器可能至少同样好。
如果接下来的几帧包含大量非常相似的数据,但移动量很小,您可以简单地使用一些数据来表示“将图像的这些区域移动 x 像素”,然后仅压缩实际的新图像数据。 t 已经出现在屏幕上。这是一个
p-frame
或基于前一帧的预测帧。p-frames
如果在 an 之后有一系列连续的帧,那么i-frame
您基本上可以擦除整个系列的帧。您可以将 8 个完整数据帧减少为 1 个单个压缩帧,同时提供少量数据进行变换和数学计算。在每秒 25 帧的情况下,如果每八帧就有一个 i 帧,则可以显着减少数据量。它有可能将数据减少到 1/8 左右,再加上图像的一些新部分。
然后是
b-frames
双向预测帧。这些可以回顾过去i-frames
,但也可以展望未来i-frame
。如果您知道下一个完整图像中有新数据,那么您可以使用该数据对当前图像中更少的数据进行编码b-frame
,并依赖于i-frame
更进一步的数据。这些预测帧可以大量减少实际编码数据量,但代价是增加视频编码和解码所需的处理能力。您需要大量的处理能力来前后查看一系列图像,找出所有相似点和差异,并应用变换、混合、模糊、运动等。
它还会消耗解码器的成本,因为您需要缓冲至少两个帧
i-frames
才能重新创建中间的所有帧。通过将大量数据卸载到详细说明变换和运动的方程中,您可以将比特率降低得远远低于您的预期,并实现更高的压缩比,特别是对于没有太多运动方式或帧之间变化的视频。
您链接的视频显示了一些高度压缩的人工制品
i-frames
,并且几乎没有运动方式。它可以轻松获得非常高的压缩比。您可以在维基百科中获取有关该过程基础知识的更多信息:视频压缩图片类型