AV Foundation ④ 视频的压缩与文件格式

2022-05-31  本文已影响0人  _涼城

视频

    视频文件是由一系列称为”帧“的图片组成的,在视频文件的时间轴线上每一帧代表一个场景。要创建连续运动的动画,我们要在短时间间隔内提供特定数量的帧。视频文件一秒钟内所能展现的帧数称为视频的帧率,并用 FPS 作为单位进行测量。

RGB

    一般图像是有红(R)、绿(G)、蓝(B)三个通道,每个通道由(0-255)不同的值组成,这就构成了多彩的图像,这称为图像的颜色空间。在图像处理中,还有另外的颜色空间,这些更具有可分离性和可操作性。所以很多的图像算法需要将图像从 RGB 转换为其他空间。视频数据就是使用 RGB 转换的 Y'CbCr 色彩空间的典型案例。

Y'CbCr

什么是 Y'CbCr

    Y'CbCr 也常称为 YUV,是一种颜色编码方法。常使用在各个影像处理组件中。Y'UVYUVYCbCrYPbPr 等专有名词都可以称为 YUV,彼此有重叠。“Y” 表示明亮度(Luminance、Luma),“U” 和 “V” 则是色度浓度(Chrominance、Chroma)。这种编码系统非常有用, YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽,因为人眼对亮度差异的敏感度高于色彩变化。在此前提下可以设计更加高效压缩图像的编码器(encoder)。

    Y′UVYUVYCbCrYPbPr 所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中 YUVY'UV 通常用来编码电视的模拟信号,而 YCbCr 则是用来描述数字的影像信号,适合视频与图片压缩以及传输,例如 MPEGJPEG。 但在现今,YUV 通常已经在电脑系统上广泛使用。

YUV_UV_plane.png

YUV与RGB的转换公式

“U” 和 “V” 组件可以被表示成原始的 R、G、和B(R、G、B为γ预校正后的):

色彩二次抽样

    可以看到通过 YUV 图片的所有细节都保存在亮度通道中,当我们采用 YUV 4:2:2 或者4:2:0时,依旧能够捕捉高质量的图片,但是如果除去亮度,剩下的就是一幅灰度图片并且所有细节都丢失了。这是因为人的眼睛对亮度的敏感度要高于色彩,因此我们可以大幅减少存储在每个像素中的颜色信息,而不至于图片的质量严重受损。这个减少颜色数据的过程就成为色彩二次抽样。而 4:4:4 、4:2:2 及 4:2:0 这些值的含义就是色彩二次抽样的参数,根据这些值按如下格式将亮度比例表示为色度值,这个格式写作 J :a :b,具体含义如下:

为维持图片指令,每个像素点都需要有各自的亮度值,却不一定需要色度值。

视频编解码器

    视频编解码的过程是指对数字视频进行压缩或解压缩的一个过程。通常这种压缩属于有损数据压缩。

    在做视频编解码时,需要考虑以下这些因素的平衡:视频的质量、用来表示视频所需要的数据量(通常称之为码率)、编码算法和解码算法的复杂度、针对数据丢失和错误的鲁棒性(Robustness)、编辑的方便性、随机访问、编码算法设计的完美性、端到端的延时以及其它一些因素。

常用的视频编解码器

容器格式

    我们经常会看到各种扩展名结尾的媒体文件,比如.mov.avi.mpg.vob.mkv.rm.rmvb,这些类型都是文件的容器格式。容器格式被认为是源文件格式,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。
在使用 AV Foundation 时,我们将遇到两类主要的格式,它们分别是:

上一篇下一篇

猜你喜欢

热点阅读