阅读有关视频质量的信息后,我发现它取决于分辨率,每秒帧数和比特率,而后者决定了视频的大小。
我的问题是比特率是如何计算的以及如何变化。
假设视频的分辨率为360x240。每帧需要86400像素。帧频为30 Hz。因此,视频每秒需要86400×30 = 2592000像素。
假设1像素是3字节(24位)的数据:我们有2592000×24位/秒的视频(62208000位),即62208 kBit(听起来不对,这可能是我的计算中的问题)。
但是它如何与众不同,如何在质量上有所作为?
阅读有关视频质量的信息后,我发现它取决于分辨率,每秒帧数和比特率,而后者决定了视频的大小。
我的问题是比特率是如何计算的以及如何变化。
假设视频的分辨率为360x240。每帧需要86400像素。帧频为30 Hz。因此,视频每秒需要86400×30 = 2592000像素。
假设1像素是3字节(24位)的数据:我们有2592000×24位/秒的视频(62208000位),即62208 kBit(听起来不对,这可能是我的计算中的问题)。
但是它如何与众不同,如何在质量上有所作为?
Answers:
您所计算的是未经压缩的原始视频的比特率。除了在研究或其他专业应用中,通常不会找到这些。甚至广播公司也使用压缩视频,尽管比特率比典型的YouTube视频高得多。
因此,视频质量与视频压缩方式有很大关系。压缩的次数越多,每帧占用的位数就越少。同样,压缩得越多,质量越差。现在,某些视频比其他视频更容易压缩-本质上,这就是为什么即使它们具有相同的分辨率和帧率,它们的比特率也较低的原因。
为了理解这是为什么,您需要了解视频压缩使用的两个主要原理。这些被称为“空间”和“时间冗余”。
显示自然内容的图像中存在空间冗余。这就是JPEG表现出色的原因-压缩图像数据是因为像素块可以一起编码。例如,这些是8×8像素。这些被称为“宏块”。
现代视频编解码器的作用相同:它们基本上使用与JPEG类似的算法,以便逐帧压缩帧。因此,您不再存储每个像素的位,而是存储每个宏块的位,因为您将像素“汇总”为更大的组。通过汇总它们,该算法还将丢弃人眼不可见的信息-在这里您可以减少大多数比特率。它通过量化数据来工作。这将保留更可察觉的频率,并“抛弃”我们看不见的频率。在大多数编解码器中,量化因子表示为“ QP”,它是质量的主要控制旋钮。
您现在甚至可以继续进行操作,并从先前已在同一图像中编码的宏块中预测宏块。这称为帧内预测。例如,灰墙的一部分已经在帧的左上角进行了编码,因此我们可以在同一帧中再次使用该宏块,例如,紧挨着它的宏块。我们将只存储与上一个的差异并保存数据。这样,我们不必编码两个非常相似的宏块。
为什么相同图像尺寸的比特率会发生变化?好吧,有些图像比其他图像更容易编码。空间活动越高,您实际需要编码的越多。光滑的纹理占用的位少于详细纹理。帧内预测也是如此:一堵灰墙框架将允许您使用一个宏块来预测所有其他宏块,而一帧流动的水可能效果不佳。
之所以存在,是因为下一帧之后的一帧可能与其前一帧非常相似。通常,只有很小的变化,对它进行完全编码是没有意义的。视频编码器所做的只是对两个后续帧之间的差异进行编码,就像它们对宏块所做的一样。
以Wikipedia的有关运动补偿的文章为例,假设这是您的原始框架:
那么与下一帧的区别就是:
编码器现在仅存储实际差异,而不是逐像素值。这就是为什么每个帧使用的位每次都不相同的原因。这些“差异”帧取决于完全编码的帧,这就是为什么现代编解码器至少有两种类型的帧:
有时您需要在视频中插入I帧。实际比特率还取决于所使用的I帧数。此外,两个后续帧之间的运动差异越大,编码器必须存储的越多。“无”运动的视频将比体育视频更容易编码,并且每帧使用更少的比特。
我相信您的数学方法实际上是正确的,但还有更多内容。压缩是此处缺少的链接。
您计算了未压缩的比特率,并提出了存在压缩的原因。对于未压缩的视频,比特率不可能变得很大。因此,他们在源处压缩视频,然后在接收器处解压缩视频,然后比特率变得可管理。您只需要一个足够快的解压缩器,可以是硬件或软件。
因此,问题就变成了可以容忍多少压缩-通常不是无损的,因此您正在丢失信息,但是他们试图使其足够智能,以丢失不太重要的不太重要的数据。通常,在进行大量运动之前,它是相当容易的,然后变得更加复杂。
编辑:忘记添加,但是实现压缩方法的部分是编解码器;我注意到您在帖子中使用它作为标签。