一、视频编解码概述
1. 应用场景
视频编码的目的就是压缩视频的占用空间,提高存储和传输的效率,在获得有效的压缩效果的同时,使得压缩过程引起的失真最小。视频压缩算法是通过去除时间、空间的冗余来实现的。通过去除不同类型的冗余,可以明显的压缩数据,代价就是一部分信息失真,可以通过熵编码器(如哈夫曼编码等)进行编码可以获得更高的压缩比。目前主流的图像/视频压缩标准为:JPEG,MPEG,H26X等标准。
2. 主流视频编码标准简介
MPEG-4和H.264(也叫AVC)是目前较为主流的编码标准。每个标准都输出了一份文档,主要定义了两方面的内容:视频数据压缩形式的编码表示(又叫做语法)和用重建视频信息的语法来描述编码方法。标准的目的是为了保证兼容的编码器能够成功的交互工作,同时也允许制造厂商自由的开发具有竞争力的创新产品。制造厂商只需要注意的事情就是能够获得和标准中采用的方法同样的结果。MPEG-4在视频压缩方面的灵活性,而H.264强调有效性和可靠性。
3. 视频编码概念
视频编码就是为了压缩视频数据流。压缩包括编码器和解码器两部分,在传输或者存储之前,编码器将源文件转换成压缩格式,在读取或播放数据时,解码器将压缩数据恢复成视频图像。编码器和解码器合称为编解码器(CODEC)。视频数据的压缩基本原理就是消除冗余,而冗余基本上是时间冗余和空间冗余。视频编码器一般分为三个主要功能单元:时域模型,频域模型和熵编码器。
时域模型的输入是未压缩的视频流,通常原始视频流的相邻帧之间具有较大的相似性,采用当前帧之前或之后的一帧或多帧图像作为参考,采用运动补偿技术来降低预测帧与当前帧之间的差别。时域模型输出的是当前帧与预测帧相减的结果和各个模型参数。
频域模型输入的是残差图像,它利用相邻像素点的相似性,消除残差图像的频域冗余。编码器对残差图像进行频域变换,再量化,得到相应的系数。变换系数经过量化后,保留了少量的残差系数,它们构成了残差图像的压缩性描述,并作为频域模型的最后输出。
熵编码器对时域参数(时域模型)和变换系数(频域模型)进行压缩,消除存在的统计冗余,并输出压缩后的压缩比特流或数据用于视频的传输和存储。压缩后的视频序列包括编码的运动矢量、变换系数以及头信息。