从这一篇开始,我们将介绍H.264/AVC。在前几篇里,我们分别介绍了MPEG-1和MPEG-2,按照顺序考虑下来,我们该会疑问,接下来不应该是MPEG-3嘛?没错,事实上MPEG-3确实有,它是在MPEG-2之后,制定的应用在HDTV上的音视频标准。但是由于MPEG-2大获成功,已经可以满足需求,所以MPEG-3就被融合进了MPEG-2。
那我们又该有疑问了,那接下来也不应该是H.264/AVC吧,应该是MPEG-4才对呀,这就涉及到我们今天的话题。所以在讲H.264/AVC之前,我们就来聊聊MPEG-4。
1、MPEG-4
MPEG-4也称视听对象编码(Coding of audio-visual objects)标准,注意跟MPEG-1和MPEG-2相比,它多了对象两个字。它不仅吸收了MPEG-1和MPEG-2的许多特性,并且引入了视听对象(audio-visual objects)编码的概念。这里我们不用管视听对象具体是指什么,因为它并不会在接下来的H.264/AVC中出现。为什么呢?这就涉及到MPEG-4的组成部分了。
就像MPEG-1和MPEG-2一样,MPEG-4由多个部分组成。而因为MPEG-4应用之广,它在1998年第一版发布之后,又在1999年发布了第二版,并且在2000年正式成为国际标准,而且即使现在,也在不断更新和完善。介绍这一段的主要目的,不是为了说明MPEG-4有多牛逼,而是为了说明,正因如此,MPEG-4的多个部分,也有先来后到。比如Part 1和Part 31,Part 1肯定是最早发布的,而Part 31,直到最近也就是2014年才发布。
MPEG-4不只是一个音视频编解码标准,它还是多媒体的应用标准。它的内容包括,音视频编解码、字幕流文本格式、字体压缩、3D图形压缩、Web视像编码等。由此可见MPEG-4的范围之广,由于它的研究课题很多,大多数人并不会全盘学习。比如我们,只关心音视频编解码部分,而这部分对应的Part分别为:Part 2(Visual)、Part 3(Audio)、Part 10(AVC)、Part 14(MP4),当然为了了解MPEG-4,还会看一下Part 1(system),也就是系统部分。
注意到Part 2和Part 3,分别是视像和声音部分,而这两部分,也是最早发布的版本里囊括的。而我们前面说的对象编码,就应用在Part 2(Visual)里。所以当我们说MPEG-4可视对象编码的时候,一般指MPEG-4 Visual,也就是ISO/IEC 14496-2 Part2,其中14496是指MPEG-4标准的编号,2就是只Part 2,合起来就是14496-2。 如下图:
图中标红框的,是它们的第一次发版的时间,可以追溯到1999年,也就是MPEG-4的第二版就发布了。
不过我们并不准备把精力放在MPEG-4 Visual上,因为在如今的实际应用中,还是H.264/AVC比较流行。我们前几篇之所以讲MPEG-1和MPEG-2,是因为它们能够为理解H.264/AVC提供帮助,但是MPEG-4 Visual包含新的对象编码的知识,对理解H.264/AVC帮助较小,所以我们直接忽略,有兴趣的自行翻阅资料即可。下面我们就开始介绍今天的主角:H.264/AVC
2、H.264/AVC
有的同学可能会觉得跳跃有点快,刚才还在说MPEG-4呢,怎么一下跳到H.264/AVC了。首先,这种感觉是正常的,因为我还没介绍一个关键的信息。从这篇文章开头开始,我们在讲H.264/AVC的时候,都一直在把H.264 和 AVC连在一起写出来,这样写其实是和它的起源有直接意义的。
我们在上面讲MPEG-4的几个比较重要的部分(Part)时,除了Part 2、Part 3,还有Part 10(AVC)和Part 14(MP4),Part 14一看就知道,这不就是大名鼎鼎的MP4格式嘛(关于MP4我们后面再介绍)。而另一个Part 10,后面备注为AVC,难道它跟H.264/AVC有关系?
恩,没错,你猜对啦,事实确实是这样。
MPEG-4 Part 10
这是维基百科上,关于MPEG-4 Part 10的介绍,请看标红框备注部分:一种视频信号压缩格式,在技术上和ITU-T H.264是一样的。而AVC的意思是,Advanced Video Coding,也就是高级视频编码。它是在2003年发布的,这与我们在MPEG-1中,展示的编码年表也是契合的:
国际视像编码年表
这样来看,ITU-T H.264和MPEG-4 AVC其实就是一个标准。之所以是一个标准,是因为它是由ITU-T VCEG(Video Coding Experts Group)专家组,和MPEG专家组,联合开发的,因此才产生了H.264/AVC这样的叫法。
H.264/AVC应用非常广泛,它可以把原始的RGB或YUV像素数据,编码为h.264裸流,而基于h.264裸流,我们还可以把它封装为MP4、MKV等格式保存至本地,还可以使用传输协议进行打包,在互联网上进行传输。这就是H.264/AVC目前的主流应用,当然这一段看不懂也没关系,因为我们只是稍微展望前方的知识路径。
H.264/AVC相比之前的编码标准,比如MPEG-1、MPEG-2,在结构上并没有明显改变。但是它的编码效率却比它们高出不少,这是为什么呢?那是因为H.264/AVC在之前的标准上,进行了很多改进,尤其是在各个主要功能模块。虽然这些改动并不大,但是这些改进却成为精华,使H.264/AVC的压缩效率,是MPEG-2的2~3倍。有效的降低了在网络上传输视频数据的成本,并且之前使用MPEG-2的DVD和数字电视,也转向了H.264/AVC。
下面就是H.264/AVC的主要改进:
(1)帧间预测: 采用可变图块的帧间预测和移动补偿,注意是可变图块,之前标准的预测图块大小为16×16像素,而改进了之后,预测图块可小到4×4像素。这样一来,移动矢量的预测精度就提高了。
(2)帧内预测: 帧内预测图块的大小,改进成了可以为16×16的宏块,也可以是4×4像素的图块,而且定义了多种预测方式。这样做,就是为了找到最佳匹配的预测图块。
(3)采用整数变换: 这是从DCT演变来的变换,可以提高运算速度。
(4)采用CAVLC和CABAC熵编码: 名称不用强记,只需知道它们都属于熵编码,并且比VLC(Variable Length Coding/可变长度编码)的编码效率高就可以了。
(5)采用多参考帧和消除块状失真的滤波技术: 块状失真就是指当压缩率过高时,会导致重构图像出现块状外观现象。而消除这一现象使用的滤波技术,如果你不打算深入学习数字图像处理,可以先不用管。
可以看到,这些改进里虽然动静不大,但是每一个都影响较大。尤其是前1、2条,16×16的预测图块,可以小到4×4,这毕然会使移动矢量的预测精度大大提高,从而影响一组预测图像,这就类似蝴蝶效应的威力!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36143.html