AV Foundation ④ 视频的压缩与文件格式
视频
视频文件是由一系列称为”帧“的图片组成的,在视频文件的时间轴线上每一帧代表一个场景。要创建连续运动的动画,我们要在短时间间隔内提供特定数量的帧。视频文件一秒钟内所能展现的帧数称为视频的帧率,并用 FPS 作为单位进行测量。
RGB
一般图像是有红(R)、绿(G)、蓝(B)三个通道,每个通道由(0-255)不同的值组成,这就构成了多彩的图像,这称为图像的颜色空间。在图像处理中,还有另外的颜色空间,这些更具有可分离性和可操作性。所以很多的图像算法需要将图像从 RGB 转换为其他空间。视频数据就是使用 RGB 转换的 Y'CbCr 色彩空间的典型案例。
Y'CbCr
什么是 Y'CbCr
Y'CbCr 也常称为 YUV,是一种颜色编码方法。常使用在各个影像处理组件中。Y'UV、 YUV、YCbCr、YPbPr 等专有名词都可以称为 YUV,彼此有重叠。“Y” 表示明亮度(Luminance、Luma),“U” 和 “V” 则是色度、浓度(Chrominance、Chroma)。这种编码系统非常有用, YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽,因为人眼对亮度差异的敏感度高于色彩变化。在此前提下可以设计更加高效压缩图像的编码器(encoder)。
Y′UV、YUV 、YCbCr、 YPbPr 所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中 YUV 和 Y'UV 通常用来编码电视的模拟信号,而 YCbCr 则是用来描述数字的影像信号,适合视频与图片压缩以及传输,例如 MPEG、JPEG。 但在现今,YUV 通常已经在电脑系统上广泛使用。
YUV_UV_plane.pngYUV与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,具体含义如下:
- J:几个关联色款中所包含的像素数
- a:用来保存位于第一行中的每个 J像素的色度像素个数
- b:用来保存位于第二行中的每个 J像素的附加像素个数
为维持图片指令,每个像素点都需要有各自的亮度值,却不一定需要色度值。
视频编解码器
视频编解码的过程是指对数字视频进行压缩或解压缩的一个过程。通常这种压缩属于有损数据压缩。
在做视频编解码时,需要考虑以下这些因素的平衡:视频的质量、用来表示视频所需要的数据量(通常称之为码率)、编码算法和解码算法的复杂度、针对数据丢失和错误的鲁棒性(Robustness)、编辑的方便性、随机访问、编码算法设计的完美性、端到端的延时以及其它一些因素。
常用的视频编解码器
-
H.26X 系列,由国际电传视讯联盟远程通信标准化组织(ITU-T)主导,包括 H.261、H.262、H.263、H.264、H.265
- H.261,主要用于老的视频会议和视频电话系统。是第一个使用的数字视频压缩标准。实质上说,之后的所有的标准视频编解码器都是基于它设计的。
- H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
- H.263,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263 比它之前的视频编码标准在性能上有了较大的提升。尤其是在低码率端,它可以在保证一定质量的前提下大大的节约码率。
- H.264,等同于 MPEG-4 第十部分,也被称为高级视频编码(Advanced Video Coding,简称 AVC),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的能够大大提高压缩性能的技术,并能够同时在高码率端和低码率端大大超越以前的诸标准。
- H.265,被称为高效率视频编码(High Efficiency Video Coding,简称 HEVC)是一种视频压缩标准,是 H.264 的继任者。HEVC 被认为不仅提升图像质量,同时也能达到 H.264 两倍的压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×4320(8K 分辨率),这是目前发展的趋势。
-
MPEG 系列,由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。
- MPEG-1 第二部分,主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。
- MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
- MPEG-4 第二部分,可以使用在网络传输、广播和媒体存储上。比起 MPEG-2 第二部分和第一版的 H.263,它的压缩性能有所提高。
- MPEG-4 第十部分,等同于 H.264,是这两个编码组织合作诞生的标准。
容器格式
我们经常会看到各种扩展名结尾的媒体文件,比如.mov
、.avi
、.mpg
、.vob
、.mkv
、.rm
、.rmvb
,这些类型都是文件的容器格式。容器格式被认为是源文件格式,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。
在使用 AV Foundation 时,我们将遇到两类主要的格式,它们分别是:
-
QuickTime
对应的文件格式是.mov
,是 Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。这种封装格式具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。 -
MPEG-4
对应的文件扩展名是.mp4
,但也有很多不同的变化扩展名也在使用,它为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。