在音视频发展的历程中,编解码无疑是其最核心的功能,编解码标准的更新换代也极大促进了音视频技术的发展以及行为模式的变更。从电视到网络视频以及现在的网络直播、点播、音视频会议等等,这些变化的背后都离不开音视频编解码技术的更新迭代。比如 H.264(仍然是目前使用最多的编解码规范)以及 H.265/HEVC(部分大厂在使用 优酷 腾讯等),以及国内的 AVS 系列。

h.26x 系列

视频编码标准的发展简史

LoveYFan

H.261-视频编奠基者

H.261 设计的目的是能够在带宽为 64kbps 的倍数的综合业务数字网(ISDN for Integrated Services Digital Network)上传输质量可接受的视频信号。编码程序设计的码率是能够在 40kbps 到 2Mbps 之间工作,能够对CIFQCIF分辨率的视频进行编码,即亮度分辨率分别是 352x288 和 176x144,色度采用4:2:0采样,分辨率分别是 176x144 和 88x72。

H.261 在图像编码上使用了我们现在比较熟悉的离散余弦变换(DCT)算法, 它在后来的 JPEG 编码中起主要作用。但不止于此,它引入了一系列针对视频的特性,奠定了现代视频编码的基础,其中主要有宏块(Macroblock)和基于宏块的运动补偿(Motion Compensation)。

H.261 使用 YCbCr 颜色空间,并采用4:2:0色度抽样,每个宏块包括 16x16 的亮度抽样值和两个相应的 8x8 的色度抽样值。YCbCr 又成为 YUV,仍然是现在编解码规范所采用的色彩空间。

宏块与基于运动补偿的帧间预测

我们知道,视频是由一帧一帧的图像组成的组合,一般情况下一秒钟的视频中会包含 24、25、30、60 或更多张图片,它们按照一定的时间间隔播放出来,基于视觉残留原理形成了流畅、会动的画面。在连续的几帧之间,实际上存在着大量重复的画面,比如说下面这个例子:

一个白色台球在绿色桌面上面运动

用小球运动的方向和距离来描述图像的变化

如果是以传统的思路对每一帧图像做压缩的话,显然整个视频在压缩过后仍存在大量的冗余。那么怎么办呢?H.261 标准引入了宏块的思维,它将整个画面切分为许多小块,然后再引入基于运动补偿的帧间预测——画面的大部分都是不动的,那么我们将不动部分的区块沿用之前的压缩结果,动的部分用运动方向加距离这样一个矢量来描述不就可以节省出大量的存储空间了吗?

DCT 算法

将 8x8 个像素分成一个块

DCT 算法起源于上世纪 70 年代,到了 80 年代中后期,有研究者开始将其用于图像压缩。这种算法可以将图像从空间域转换到频率域,然后做量化——减少人眼敏感程度较低的高频信息,保留绝大部分低频信息,从而减少图像的体积。最后再用高效的数据编码方式将处理过后的数据进一步压缩,这里使用了 Zig-Zag 扫描和可变长编码。

在 H.261 及之后基于 H.261 框架的视频编码中,DCT 算法主要针对的是关键帧的压缩,所谓关键帧,就是在运动补偿中作为基准参考的一帧。打个比方,就像 Flash 动画中的关键帧一样,它定义了一个起点,后续的几帧都是基于这个关键帧演算出来的。因为它只做帧内压缩,不涉及其他帧,又被称为 Intra-frame(帧内编码帧),简称 I 帧。

MPEG-1:引入帧类型概念

MPEG-1 是为CD光盘介质定制的视频和音频压缩格式。MPEG-1 采用了块方式的运动补偿离散余弦变换DCT)、量化等技术,并为 1.2Mbps 传输速率进行了优化。MPEG-1 随后被Video CD采用作为核心技术。

音频-MP3

MPEG-1 音频分三代,其中最著名的第三代协议被称为 MPEG-1 Layer 3,简称MP3,目前仍然是广泛流传的音频压缩技术。

视频-引入 B 帧以及 GOP

在 H.261 中其实已经有视频帧的概念了,比如上面的关键帧(就是一张完整的静态图像,可以直接被解码出来),另外的帧则是通过运动补偿算法在关键帧之上计算得到的。

不过 MPEG-1 真正引入了帧类别的概念,原来的关键帧被称为“I 帧”,基于帧间预测计算得到的帧为 P 帧。在这两种 H.261 已有的帧类型外,它引入了一种新的帧:双向预测帧,也叫作 B 帧。

不过引入 B 帧的同时,也使编解码的复杂度提高了,MPEG-1 又提出了 GOP(Group of pictures),即 I 画格和 I 画格之间的画格排列。

图像群组就是一组以 MPEG 编码的影片或视讯串流内部的连续图像。每一个以 MPEG 编码的影片或视讯串流都由连续的图像群组组成。

下图是 GOP 示例

MPEG-2:DVD 标准

对于 MPEG-1,它并没有太大的改动,主要是针对 DVD 应用和数字时代进行了改良。

支持隔行扫描

隔行扫描(英语:Interlaced)是一种将图像显示在扫描式的显示设备上的方法相比逐行扫描,隔行扫描占用带、宽比较小。扫描设备交换扫描偶数行和奇数行。

一个慢速的隔行扫描的示意

H.263:熟悉的 3GP 视频

原先的 H.261 和 MPEG-1 都是偏向于低码率应用的,随着互联网和通讯技术的飞速发展,人们对网络视频的需求在提高,在低码率下追求更高质量的视频成为了新的目标,而作为通信业的一大标准制定者,ITU-T 在 1995 年推出了 H.261 的直接继承者——H.263。

在上世纪 90 年代,3GP 也是风靡一时,它减少了存储空间和较低的带宽需求,让手机上有限的存储空间可以使用。目前在 3GP 中 H.263 仍然占据着主流地位。

H.264/MPEG-4:到了熟悉的 Part

H.264/AVC 是一种面向块,基于运动补偿视频编码标准 。到 2014 年,它已经成为高精度视频录制、压缩和发布的最常用格式之一。

H.264/AVC 包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这些新特性包括:

  • 多参考帧的运动补偿。比起以前的视频编码标准,H.264/AVC 以更灵活的方式使用已编码的更多帧来作为参考帧。在某些情况下,可以使用最多 32 个参考帧(在以前的标准里面,参考帧的数目不是 1 就是对 B 帧来说的 2)。该特性对大多数场景序列都可以带来一定的码率降低或者质量提高,对某些类型的场景序列,例如快速重复的闪光,反复的剪切或者背景遮挡的情况,它能很显著的降低编码的码率。

  • 变块尺寸运动补偿。可使用最大 16x16 至最小 4x4 的块来进行运动估计与运动补偿,能够对图像序列中的运动区域进行更精确的分割。这些类型共有 16×16、16×8、8×16、8×8、8×4、4×8、4×4

  • 为了减少混叠(Aliasing)并得到更锐化的图像,采用六抽头的滤波器(六阶数字滤波器)来产生二分之一像素的亮度分量预测值。

  • 灵活的隔行扫描视频编码(interlaced-scan video coding)。

  • .....

H.265/HEVC:尴尬的继任者

作为 H.264 的继任者,HEVC 被认为不仅提升影像质量,同时也能达到 H.264/MPEG-4 AVC 两倍之压缩率(等同于同样画面质量下比特率减少到了 50%),可支持4K清晰度甚至到超高清电视(UHDTV),最高清晰度可达到 8192×4320(8K清晰度)。

下图是 H265 与 h264 主观视频性能比较

从上面的性能比较我们知道 H.265 在各种参数上都要优于 H.264,那为什么说它是尴尬的继任者呢,

  1. 现有大部分音视频还是以 H.264 为主,且 H.264 可以满足大部分的场景

  2. 授权费过于昂贵,国内外音视频服务厂家被 H.264 已经薅了一次羊毛,如果再支持 H.265 又要交授权费用,所以目前只有一部分大厂(腾讯,优酷)再特定的影片上使用。

  3. H.266 已经发布,所以如果确实有需求的可能等着接入 H.266,不太需要的仍然不会接入 H.265,所以它的位置比较尴尬。

不过 H.266 可能还需要几年的发展,留给 H.265 的时间不多了,不过它仍然有机会。

H.266/VVC:未来编码

它来了它来了,它迈着六亲不认的步伐走来了,必将引领新一代音视频世界的发展,它就是 H.266/VVC。

2020 年 7 月,H.266/VVC 视频编解码标准宣布编辑完成,也是这个时刻为未来 10 年内音视频发展方向指明了方向。

VVC 全称 Versatile Video Coding(多功能视频编码),也称为 H.266MPEG-I 第 3 部分未来视频编码FVC)。VVC 的设计初衷是为了在同样的视频质量下达到更大的压缩比、更低的码率,为 4k、8k 超清视频、360 全景视频等更多场景赋能。当然 VVC 还有其他特性:

该标准预期的编码复杂度为 HEVC 的数倍(最多十倍),但具体取决于编码算法的质量。其解码复杂度预期约为 HEVC 的两倍。

视频标准更新换代/编码效率的更新

PS

• VTM = VVC test model, latest version is VTM-10.0 (测试模型参考软件平台)

• JVET = Joint Video Experts Team of the ITU-T VCEG and ISO/IEC MPEG (VVC 标准委员会)

H.266/VVC 优点

降低成本

现有的 H.264/H.265 已经满足大部分的音视频业务需求,但是在一些业务下已经达到了瓶颈,还有 CDN 的带宽流量也是一比很大的投入,如果能在在同样的视频质量下达到更大的压缩比、更低的码率,那么就意味着能以同样的 CDN 服务器服务更多的客户,降本提效。

赋能更多场景

新兴的业务比如 VR(Virtual Reality 虚拟现实),AR(Augmented Reality 增强现实),360 全景等,必须使用 4k 甚至更高的 8k 分辨率才能达到效果,在这个情境下就是如何更快(低延迟)、更好(分辨率)、更少(低码率)的传输数据,现有的编解码方案已经无法满足。国内外 VVC 发展现状

国内 H.266 的发展

  1. 积极参与 H.266 的标准制定,其中代表的是腾讯、阿里,都在 H.266 制定标准的过程中提交了几百份提案,被采纳率过半。积极参与规则的制定,后面才有发言权,这是血的教训。

  2. 腾讯开源首个 H.266 编解码器https://github.com/TencentCloud/O266player,详情请参看https://www.infoq.cn/article/auuthrzodb8j2k8lmrsz

AVS 系列

AVS 发展历史

国内的 AVS 编解码标准由于起步较晚,大部分专利都在国外,大部分国内企业还是会沦落到任人宰割的境地。另外 AVS 编码体系性能上还是有所不足。根据 IEEE 出具的一份 HEVC/VP9/AVS2 编码效率对比报告,其中在随机访问条件下,HEVC 性能优于 VP9 24.9%,AVS2 6.5%;在延迟条件下,HEVC 优于 VP9 8.7%,AVS2 14.5%。在某些领域,AVS2 对比 HEVC 已经相差不大,但从总体性能和应用规模来看,AVS2 还有很长的路要走。所以即使国家在极力推动 AVS,其应用场景还是比较少,国企里用的比较多。

Google 系列

VP8

从技术角度来说,VP8 采用的技术是类似于 H.264 的。虽然在我们看到的宣传中,VP8 拥有比 H.264 更佳的压缩效率,但在实际应用中,由于它在设计上有一定的瑕疵,表现并不如 H.264,最终它虽然进入了 Web 标准,但也没见有人用它,反而是由它的帧内压缩技术提取而成的 WebP 受到了欢迎。

VP9

VP8 的表现并不理想,Google 很快就推出了它的继任者——VP9。这次,他们参考的是 HEVC,设计目标同样是高分辨率下的高效编码。VP9 中的一些设计是受到了 HEVC 的影响的,比如说同样最大为 64x64 的超级块(Super Block)。最终 VP9 达成的结果是提供了比 VP8 高达 50%的效率提升。看起来它能够和 HEVC 比肩了,但是它也遇到了和 VP8 相似的问题,推广不开。VP9 的应用范围实际也局限在 Google 自家的 Youtube 中,只能说是缺少实际应用场景。

未来音视频发展的思考与展望

深度学习以及端-端智能赋能未来音视频发展。

深度学习

通过模型训练 AI 来智能调整编解码器参数。

端智能

建立端-端的通信链路

别再傻傻分不清 AVSx H.26x MPEG-x 了的更多相关文章

  1. 【jvm】08-垃圾回收器那么多傻傻分不清?

    [jvm]08-垃圾回收器那么多傻傻分不清? 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点 ...

  2. cookie、session,、token,还在傻傻分不清?

    摘要:session 和 token 本质上是没有区别的,都是对用户身份的认证机制,只是他们实现的校验机制不一样而已. 本文分享自华为云社区<Session/Cookie/Token 还傻傻分不 ...

  3. MVP MVC MVVM 傻傻分不清

    最近MVC (Model-View-Controller) 和MVVM (Model-View-ViewModel) 在微软圈成为显学,ASP.NET MVC 和WPF 的Prism (MVVM Fr ...

  4. [转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!

    十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for= ...

  5. OCA,OCP,OCM傻傻分不清?

    可能大家知道OCA.OCP.OCM的关系是一个比一个难考,一个比一个含金量高,但是你知道具体的考试科目.考试方式.就业形势区别吗?不知道的话这篇通俗易懂的文章会让你一目了然. 区别一:含金量 ■OCA ...

  6. 学点经济学:M0、M1、M2、M3,傻傻分不清?(转载)

    来源:http://t.10jqka.com.cn/pid_97006727.shtml 学点经济学:M0.M1.M2.M3,傻傻分不清? 25,508人浏览 2018-08-03 11:06 常听人 ...

  7. ASCII、Unicode、UTF-8、UTF-8(without BOM)、UTF-16、UTF-32傻傻分不清

    ASCII.Unicode.UTF-8.UTF-8(without BOM).UTF-16.UTF-32傻傻分不清 目录 ASCII.Unicode.UTF-8.UTF-8(without BOM). ...

  8. session cookie傻傻分不清

    做了这么多年测试,还是分不清什么是cookie,什么是session?很正常,很多初级开发工程师可能到现在都搞不清什么是session,cookie相对来说会简单很多. 下面这篇文章希望能够帮助大家分 ...

  9. 【华为敏捷/DevOps实践】7. 敏捷,DevOps,傻傻不分清楚【华为云技术分享】

    文:姚冬(华为云DevCloud首席技术布道师,资深DevOps与精益/敏捷专家,金融解决方案技术Leader,中国DevOpsDays社区核心组织者) 前言 敏捷是什么?DevOps是什么?两者有什 ...

  10. JS魔法堂:属性、特性,傻傻分不清楚

    一.前言 或许你和我一样都曾经被下面的代码所困扰 var el = document.getElementById('dummy'); el.hello = "test"; con ...

随机推荐

  1. Docker-Compose编排与部署

    Docker Compose (多个容器编排) 是一个定义及运行多个docker容器的工具,可以使用YAML文件来配置应用,使用命令,可以创建并启动配置中的所有服务.docker compose会通过 ...

  2. zk中控考勤机默认密码登陆

    网络空间搜索: app="ZKTECO-考勤管理系统" 找到某一个考勤系统 进行弱口令登陆:admin/****** 成功! End!!!

  3. mysql设置表名不区分大小写

    1.root登录,修改/etc/my.cnf2.在mysqld下加入:lower_case_table_names=13.重新数据库

  4. python 安装步骤

    1.这个安装方法不需要配置环境变量 2. 3. 4.进入cmd,输入python -v

  5. windows快捷键, 基本dos命令

    Ctrl+C 复制Ctrl+V 粘贴Ctrl+A 全选Ctrl+X 剪切Ctrl+S 保存Alt+F4 关闭窗口shift+delete 永久删除Window+R 打开运行cmd 打开命令行窗口Win ...

  6. 导出接口 生成doc文档

    public function test1(){ echo ' <html xmlns:o="urn:schemas-microsoft-com:office:office" ...

  7. MATLAB 多行注释

    自用的两种方法 1: %{ 若干语句 } % 2.快捷键CTRL+R,取消注释CTRL+T

  8. c++学习2 基础关键词

    三 volatile强制访问内存 在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里.但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法及时获取最新的一手数 ...

  9. win10 系统 腾讯云服务器 部署网站 并进行访问

    1.首先需要一个服务器 我是用的Windows系统 我用的是腾讯云的服务器(因为便宜) 然后给服务器重置密码 然后用重置后的密码 用户名 用远程桌面连接登录试试 远程桌面连接成功 然后回到服务器网站 ...

  10. 反序列化 sqlserver 中的 sysdiagrams,找到其中包含的表的信息

    转载于:Script SQL Server 2005 diagrams to a file - CodeProject /** <summary> Based on ufn_Varbina ...