音视频编码基础技术.

本文参考文章:
流媒体系统对比
封装格式对比
视频编码器对比
音频编码格式对比
雷霄骅雷神博客
HEVC
x265编码器

我们平时下载的电影,因为下载的来源不同,这些电影文件有不同的格式,用不同的后缀表示:avi,rmvb,mp4,flv,mkv等等(当然也使用不同的图标)。在这里需要注意的是,这些格式代表的是封装格式。何为封装格式?就是把视频数据和音频数据打包成一个文件的规范。仅仅靠看文件的后缀,很难能看出具体使用了什么视音频编码标准。总的来说,不同的封装格式之间差距不大,各有优劣。
注:有些封装格式支持的视音频编码标准十分广泛,应该算比较优秀的封装格式,比如MKV;而有些封装格式支持的视音频编码标准很少,应该属于落后的封装格式,比如RMVB。
在此我选用了魔力盒中的一个视频 进行说明.
该视频的 后缀为 mp4. Video codec_name 为H.264, Audio codec_name 为 aac.
这样我们就可以说 这个视频 采用mp4的QuickTime封装格式(MOV),采用了H.264(AVC)的视频压缩编码标准, AAC的音频编码标准.

接下来说一下我们使用播放器去播放一个视频, 中间发生了什么.
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。
如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。
他们的过程如图所示。
过程图

其中
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。
视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来

其中几个概念的 特殊说明

流媒体协议

流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。

主要流媒体协议一览

流媒体

封装格式

封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:

主要封装格式一览

封装格式

视频编码

视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。

主要视频编码一览

视频编码
由表可见,有两种视频编码方案是最新推出的:VP9和HEVC。目前这两种方案都处于研发阶段,还没有到达实用的程度。当前使用最多的视频编码方案就是H.264。

音频编码

音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。

主要音频编码一览

音频编码
由表可见,近年来并未推出全新的音频编码方案,可见音频编码技术已经基本可以满足人们的需要。音频编码技术近期绝大部分的改动都是在MP3的继任者——AAC的基础上完成的。

现有网络视音频平台对比

现有的网络视音频服务主要包括两种方式:点播和直播。点播意即根据用户的需要播放相应的视频节目,这是互联网视音频服务最主要的方式。绝大部分视频网站都提供了点播服务。直播意即互联网视音频平台直接将视频内容实时发送给用户,目前还处于发展阶段。直播在网络电视台,社交视频网站较为常见。

直播平台参数对比

主流互联网视音频平台直播服务的参数对比如表所示:
现有网络视音频平台参数对比
zhibo

可以看出,直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式。采用RTMP作为直播协议的好处在于其被Flash播放器支持。而Flash播放器如今已经安装在全球99%的电脑上,并且与浏览器结合的很好。因此这种流媒体直播平台可以实现“无插件直播”,极大的简化了客户端的操作。封装格式,视频编码,音频编码方面,无一例外的使用了FLV + H.264 + AAC的组合。FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。视频播放器方面,都使用了Flash播放器。

点播平台参数对比

主流网络视音频平台点播服务的参数对比如表所示:
现有互联网视音频平台参数对比
dianbo
可以看出,点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。视频编码标准和音频编码标准是H.264和AAC。这两种标准分别是当今实际应用中编码效率最高的视频标准和音频标准。视频播放器方面,无一例外的都使用了Flash播放器。

H.265.

首先可以明确的是 H265 属于一种视频编码格式, 这里有一篇比较专业的说明, HEVC / H.265 Explained
h265

说到H.265, 就不得不先提一下H.264了, H.264仅仅是一个编码标准,而不是一个具体的编码器,H.264只是给编码器的实现提供参照用的。
Google推出的VP8属于和H.264同一时代的标准。总体而言,VP8比H.264要稍微差一点。除了在技术领域,VP8和H.264在专利等方面也是打的不可开交。
可以武断的说,H264.是现在最主流的视频编码标准.
而H.265 是 H.264/MPEG-4 AVC的继任者。目前正在由ISO/IEC MPEG和ITU-T VCEG开发中。为此目的MPEG与VCEG联合成立了一个JCT-VC(JointCollaborative Team on Video Coding)作为共同开发HEVC的团队。HEVC被认为不仅提升图像质量,同时也能达到H.264/MPEG-4 AVC两倍之压缩率(等同于同样画面质量下比特率减少了50%),可支持4K分辨率甚至到超高画质电视,最高分辨率可达到8192×4320(8K分辨率)。第一版的HEVC/H.265视频压缩标准在2013年4月13日被接受为国际电信联盟(ITU-T)的正式标准。
VP9是一个由Google开发的开放的视频压缩标准。VP9将是VP8的后继者。VP9的开发始于2011。VP9的目标之一是相同质量下相对于VP8可以减少50%的比特率。而另一个目标就是争取能在压缩效率上高于HEVC。2013年2月21日,第一个支持VP9解码技术的Google Chrome网页浏览器发布了。
HEVC VP9 以及x264的性能对比, 结果参考 Dan Grois等人的论文《Performance Comparison of H.265/MPEG-HEVC, VP9, andH.264/MPEG-AVC Encoders》

选用的编码器如下:

HEVC:HM
VP9:libvpx
H.264:x264

HEVC性能最强,奇怪的是x264的性能竟然好于VP9。要知道VP9可是Google推出的下一代编码标准。x264太强悍了!

PS:此外,x264的速度是远远高于HEVC和VP9的。

对比1

下表显示了HEVC在同等质量的前提下(以PSNR为依据),相对于VP9和x264节约的码率。下表显示了所有序列的情况。总体来说HEVC相对于VP9节约了41.9%,HEVC相对于x264节约了38.9%。

对比2

下表显示了三种编码器整体性能的比较。表中百分比数字的意义是:同等视频质量的前提下,该列所属的编码器相对于该行所属的编码器节约的码率,如果为负值,则代表反而消耗了更多的码率。例如,同等质量的前提下,x264相对于VP9节约了8.4%的码率。

对比3

同等视频质量的前提条件下,编码消耗时间对比如下表所示。可以看出,VP9编码时间大约是x264的130倍。HEVC编码时间大约是VP9的7倍。

对比4

此外,在码率一定的情况下,几种编码标准结果大致是这样的:HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。

HEVC 在未来拥有很大的优势, 具体可以参考以下文字段

在数字视频应用产业链的快速发展中,面对视频应用不断向高清晰度、高帧率、高压缩率方向发展的趋势,当前主流的视频压缩标准协议H.264(AVC)的局限性不断凸显。同时,面向更高清晰度、更高帧率、更高压缩率视频应用的HEVC(H.265)协议标准应运而生。本文重点分析了下一代视频压缩协议标准HEVC(H.265)的技术亮点,并对其在未来应用中将给整个产业带来的深刻变化予以展望。

H.264(AVC)从2003年5月草稿发布以来,凭借其相对于以往的视频压缩标准在压缩效率以及网络适应性方面的明显优势,逐步成为视频应用领域的主流标准。根据 MeFeedia的数据,由于iPad以及其它新兴设备大多支持H.264硬件加速,至2011年底,80%的视频使用H.264编码,并且随着支持H.264解码的设备不断增多,这一占有率还将进一步增长。

  但是,随着数字视频应用产业链的快速发展,视频应用向以下几个方向发展的趋势愈加明显:

(1) 高清晰度(HigherDefinition):数字视频的应用格式从720 P向1080 P全面升级,在一些视频应用领域甚至出现了4K x 2K、8K x 4K的数字视频格式;

(2) 高帧率(Higherframe rate ):数字视频帧率从30fps向60fps、120fps甚至240fps的应用场景升级;

(3) 高压缩率(HigherCompression rate ):传输带宽和存储空间一直是视频应用中最为关键的资源,因此,在有限的空间和管道中获得最佳的视频体验一直是用户的不懈追求。

  由于数字视频应用在发展中面临上述趋势,如果继续采用H.264编码就出现的如下一些局限性:

(1) 宏块个数的爆发式增长,会导致用于编码宏块的预测模式、运动矢量、参考帧索引和量化级等宏块级参数信息所占用的码字过多,用于编码残差部分的码字明显减少。

(2) 由于分辨率的大大增加,单个宏块所表示的图像内容的信息大大减少,这将导致相邻的4 x 4或8 x 8块变换后的低频系数相似程度也大大提高,导致出现大量的冗余。

(3) 由于分辨率的大大增加,表示同一个运动的运动矢量的幅值将大大增加,H.264中采用一个运动矢量预测值,对运动矢量差编码使用的是哥伦布指数编码,该编码方式的特点是数值越小使用的比特数越少。因此,随着运动矢量幅值的大幅增加,H.264中用来对运动矢量进行预测以及编码的方法压缩率将逐渐降低。

(4) H.264的一些关键算法例如采用CAVLC和CABAC两种基于上下文的熵编码方法、deblock滤波等都要求串行编码,并行度比较低。针对GPU/DSP/FPGA/ASIC等并行化程度非常高的CPU,H.264的这种串行化处理越来越成为制约运算性能的瓶颈。

  为了面对以上发展趋势,2010年1月,ITU-T VCEG(VideoCoding Experts Group) 和ISO/IEC MPEG(Moving Picture Experts Group)联合成立JCT-VC(JointCollaborative Team on Video Coding)了联合组织,统一制定下一代编码标准:HEVC(High Efficiency Video Coding)。
HEVC协议标准计划于2013年2月份正式在业界发布,目前整个框架结构已基本确定。截至2012年4月份,JCT-VC联合工作组已经召开了第八次会议,并于2012年2月17日发布了第一版内部草稿《High efficiency videocoding (HEVC) text specification draft 6》,计划2012年7月发布第一版公开版草稿,在H.264标准2~4倍的复杂度基础上,将压缩效率提升一倍以上。

Share Comments