为了回答这个问题,我下载了以下视频:
下载为“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% 的压缩率,这比我听说过的任何压缩率都要高。
我的计算是不是有问题?
答案1
根据视频的不同,它们可以有一个主帧,该主帧本质上是类似于 JPEG 的有损压缩图像。它i-frame
包含实际的图像数据。
JPEG 已经达到了 10:1 的压缩率,且质量损失最小,较新的视频编解码器可能至少具有同样的效果。
如果接下来的几帧包含大量非常相似的数据,但移动量很小,那么您可以简单地获得一些数据,表示“将图像的这些区域移动 x 像素”,然后仅压缩实际新的屏幕上尚未显示的图像数据。这是p-frame
,或基于前一帧的预测帧。
如果您有一系列连续的帧p-frames
,那么i-frame
您可能会删除整个帧系列。您将把 8 个完整帧的数据减少到 1 个压缩帧,同时还有少量的数据进行变换和数学计算。
如果在每秒 25 帧的情况下每八帧有一个 i 帧,则可以大大减少数据量。它可能会将数据量减少到大约 1/8 加上图像的一些新部分。
然后还有b-frames
双向预测帧。它们可以回顾之前的i-frames
,但也可以展望未来的下一个 i-frame
。如果您知道下一个完整图像中有新数据,那么您可以使用该数据来编码当前图像中更少的数据,b-frame
并依赖i-frame
更远的数据。
这些预测帧可以大幅减少实际编码数据量,但代价是增加编码和解码视频所需的处理能力。您需要大量的处理能力来回顾和回顾一系列图像,找出所有相似之处和不同之处,并应用变换、混合、模糊、运动等。
它还会花费解码器的成本,因为您需要缓冲至少两个i-frames
才能重新创建中间的所有帧。
通过将大量数据卸载到详细描述变换和运动的方程式中,您可以将比特率降低到远远低于您的预期,并实现更高的压缩比,特别是对于没有太多运动或帧间变化的视频。
您链接的视频显示了一些高度压缩的伪影i-frames
,几乎没有运动。它可以轻松获得非常高的压缩比。
您可以在以下网址获取有关该流程基础知识的更多信息维基百科:视频压缩图片类型