从这一篇开始,我们将介绍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)帧间预测: 采用可变图块的帧间预测和移动补偿,注意是可变图块,之前标准的预测图块大小为16x16像素,而改进了之后,预测图块可小到4x4像素。这样一来,移动矢量的预测精度就提高了。

(2)帧内预测: 帧内预测图块的大小,改进成了可以为16x16的宏块,也可以是4x4像素的图块,而且定义了多种预测方式。这样做,就是为了找到最佳匹配的预测图块。

(3)采用整数变换: 这是从DCT演变来的变换,可以提高运算速度。

(4)采用CAVLC和CABAC熵编码: 名称不用强记,只需知道它们都属于熵编码,并且比VLC(Variable Length Coding/可变长度编码)的编码效率高就可以了。

(5)采用多参考帧和消除块状失真的滤波技术: 块状失真就是指当压缩率过高时,会导致重构图像出现块状外观现象。而消除这一现象使用的滤波技术,如果你不打算深入学习数字图像处理,可以先不用管。

可以看到,这些改进里虽然动静不大,但是每一个都影响较大。尤其是前1、2条,16x16的预测图块,可以小到4x4,这毕然会使移动矢量的预测精度大大提高,从而影响一组预测图像,这就类似蝴蝶效应的威力!

H.264/AVC简介相关推荐

  1. 【H.264/AVC视频编解码技术详解】三. H.264简介

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  2. 音视频开发(42)---H.264 SVC 简介

    H.264 SVC 简介 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CrystalShaw/article/details/81184531 一 ...

  3. 【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  4. 笔记:新一代视频压缩编码标准-h.264/AVC

    第一章绪论: 信源模型: 1.基于波形的编码.基于波形的编码采用了把预测编码和变化编码组合起来的基于块的混合编码方法. 2.基于内容的编码.mpeg4采用的编码方法即是基于块的混合编码,又有基于内容的 ...

  5. H.264/AVC 中的宏块、片、帧

    上篇文章最后,因为编辑的原因,有一点没有补充.就是最后给出的维基百科的FMO彩图,其中的Type 0 并不是规则0中的交错片组,而是不使用FMO情况下的,标准的H.264像片,而Type 1 至Typ ...

  6. H264学习二:H.264/AVC编码标准

    目录 一. H.264/AVC标准 二. H.264视频编码方法简介 H.264对一个宏块的编码 帧内预测 补充 一. H.264/AVC标准 发起者:ITU-T的VCEG(Video Coding ...

  7. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  8. 【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据...

    <H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.2 ...

  9. 6. H.264/AVC编码器原理

    1. H.264/AVC的应用 H.264 不仅具有优异的压缩性能,而且具有良好的网络亲和性,这对实时的视频通信是十分重要的.和 MPEG-4 中的重点是灵活性不同,H.264 着重在压缩的高效率和传 ...

  10. H.264/AVC视频编解码技术详解 第一章 视频信息与压缩编码

    H.264/AVC视频编解码技术详解系列笔记 是对 H.264/AVC视频编解码技术详解 课程的学习 文章目录 人与世界的交互 视频信号的表示方法 视频压缩编码 视频信息为什么可以被压缩? 视频压缩编 ...

最新文章

  1. [数位dp] spoj 10738 Ra-One Numbers
  2. 不同屏幕分辨率 坐标_干货 | 小议光固化3D打印XY轴分辨率精度
  3. java中文getbytes为3,java 中文乱码问题
  4. python学号怎么编写_用python编写学生管理系统
  5. oracle imp 1403,Oracle中用exp/imp命令参数详解【转】
  6. 三剑客之sed常用操作
  7. Java+Windows+ffmpeg实现视频转换
  8. VC操作Excel2003,Word2003的两种方式
  9. 给BERT加一个loss就能稳定提升?斯坦福+Facebook最新力作!
  10. VS2017安装方法
  11. JS-记事本(代码)
  12. win10电脑chm文件打不开的解决方法
  13. 25个JAVA 机器学习工具包
  14. LeetCode动态规划题解
  15. kubectl 命令详解(三十五):rollout undo
  16. android共享局域网打印,Android 浅谈同一局域网下使用WiFi连接打印机
  17. Pytorch 锚框
  18. 呼叫中心ACD系统的介绍
  19. 2020年日历_2020年日历表打印版下载|2020年日历表 打印版 下载 - 巴士下载站
  20. Linux:xinetd服务安装与配置(操作环境:Ubuntu 18.04)

热门文章

  1. 华为自带时钟天气下载_华为手机锁屏时钟软件
  2. 乐优商城遇到的坑(三)之Centos6.5下安装nginx出错
  3. hping3拒绝服务攻击小结
  4. unzip命令常用参数
  5. Java英文单词翻译(API文档,IDE以及基本的java英文)
  6. 如何统计项目代码行数
  7. Matlab下载 安装 与 和谐教程
  8. 《大数据之路:阿里巴巴大数据实践》-第1章 总述
  9. SDL游戏开发之七-虚拟摇杆
  10. 华为ensp命令大全_从零开始学习华为路由交换 | 配置接口IP