4.2 视频编码技术的实现方法
视频是由不同的帧画面连续播放形成的。
这些帧,主要分为三类,分别是:
1)I帧;
2)B帧;
3)P帧。
I帧:是自带全部信息的独立帧,是最完整的画面(占用的空间最大),无需参考其它图像便可独立进行解码。视频序列中的第一个帧,始终都是I帧。
P帧:“帧间预测编码帧”,需要参考前面的I帧和/或P帧的不同部分,才能进行编码。P帧对前面的P和I参考帧有依赖性。但是,P帧压缩率比较高,占用的空间较小。
▲ P帧
B帧:“双向预测编码帧”,以前帧后帧作为参考帧。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可以达到200:1。不过,因为依赖后面的帧,所以不适合实时传输(例如视频会议)。
▲ B帧
通过对帧的分类处理,可以大幅压缩视频的大小。毕竟,要处理的对象,大幅减少了(从整个图像,变成图像中的一个区域)。
如果从视频码流中抓一个包,也可以看到I帧的信息,如下:
我们来通过一个例子看一下。
这有两个帧:
好像是一样的?
不对,我做个gif动图,就能看出来,是不一样的:
人在动,背景是没有在动的。
第一帧是I帧,第二帧是P帧。两个帧之间的差值,就是如下:
也就是说,图中的部分像素,进行了移动。移动轨迹如下:
这个,就是运动估计和补偿。
当然了,如果总是按照像素来算,数据量会比较大,所以,一般都是把图像切割为不同的“块(Block)”或“宏块(MacroBlock)”,对它们进行计算。一个宏块一般为16像素×16像素。
▲ 将图片切割为宏块
好了,我来梳理一下。
对I帧的处理,是采用帧内编码方式,只利用本帧图像内的空间相关性。对P帧的处理,采用帧间编码(前向运动估计),同时利用空间和时间上的相关性。简单来说,采用运动补偿(motion compensation)算法来去掉冗余信息。
需要特别注意,I帧(帧内编码),虽然只有空间相关性,但整个编码过程也不简单。
如上图所示,整个帧内编码,还要经过DCT(离散余弦变换)、量化、编码等多个过程。限于篇幅,加之较为复杂,今天就放弃解释了。
那么,视频经过编码解码之后,如何衡量和评价编解码的效果呢?
一般来说,分为客观评价和主观评价。客观评价,就是拿数字来说话。例如计算“信噪比/峰值信噪比”。
信噪比的计算,我就不介绍了,丢个公式,有空可以自己慢慢研究...
除了客观评价,就是主观评价了。主观评价,就是用人的主观感知直接测量,额,说人话就是——“好不好看我说了算”。
5、视频编码的国际标准
5.1 视频编码格式的标准化
接下来,我们再说说标准(Standard)。任何技术,都有标准。自从有视频编码以来,就诞生过很多的视频编码标准。
提到视频编码标准,先介绍几个制定标准的组织。
首先,就是大名鼎鼎的ITU(国际电信联盟)。
ITU是联合国下属的一个专门机构,其总部在瑞士的日内瓦。
ITU下属有三个部门:
1)分别是ITU-R(前身是国际无线电咨询委员会CCIR);
2)ITU-T(前身是国际电报电话咨询委员会CCITT);
3)ITU-D。
除了ITU之外,另外两个和视频编码关系密切的组织,是ISO/IEC。
ISO大家都知道,就是推出ISO9001质量认证的那个“国际标准化组织”。IEC,是“国际电工委员会”。1988年,ISO和IEC联合成立了一个专家组,负责开发电视图像数据和声音数据的编码、解码和它们的同步等标准。这个专家组,就是大名鼎鼎的MPEG,Moving Picture Expert Group(动态图像专家组)。
三十多年以来,世界上主流的视频编码标准,基本上都是它们提出来的:
1)ITU提出了H.261、H.262、H.263、H.263+、H.263++,这些统称为H.26X系列,主要应用于实时视频通信领域,如会议电视、可视电话等;
2)ISO/IEC提出了MPEG1、MPEG2、MPEG4、MPEG7、MPEG21,统称为MPEG系列。
ITU和ISO/IEC一开始是各自捣鼓,后来,两边成立了一个联合小组,名叫JVT(Joint Video Team,视频联合工作组)。
JVT致力于新一代视频编码标准的制定,后来推出了包括H.264在内的一系列标准。
▲ 压缩率对比
▲ 视频编码标准的发展关系
大家特别注意一下上图里面的HEVC,也就是现在风头正盛的H.265。
作为一种新编码标准,相比H.264有极大的性能提升,目前已经成为最新视频编码系统的标配。
最后,我再说说封装。
5.2 视频数据的封装
对于任何一部视频来说,只有图像,没有声音,肯定是不行的。所以,视频编码后,加上音频编码,要一起进行封装。
封装:就是封装格式,简单来说,就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中。再通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个饭盒,用来盛放饭菜的容器。
目前主要的视频容器有如下:MPG、VOB、MP4、3GP、ASF、RMVB、WMV、MOV、Divx、MKV、FLV、TS/PS等。
封装之后的视频,就可以传输了,你也可以通过视频播放器进行解码观看。(本文同步发布于:http://www.52im.net/thread-2840-1-1.html)
摘自 https://my.oschina.net/u/4231722/blog/3131158
- 内容分页 1 2