VP9是由谷歌主导的免费视频编码标准,它在同等画质下码率较上一代VP8可降低50%,编码效率号称超过H.265/HEVC,并支持更大的编码区块、更多的色彩空间。除了谷歌之外,近ARM、英特尔、英伟达、LG、博通、飞利浦、三星、Realtek等行业巨头以及其它众多企业机构都开始正式加入VP9的支持行列。那么,这一免费的视频编码标准究竟有何特殊之处?它在与H.265的争夺中究竟能否胜出呢?
和胶卷电影由一张张照片组成类似,数字视频也是由一张张的点阵图片组成,通过连续高速播放点阵图片实现动态效果。但是,直接保存原始图片所需的空间巨大,1分钟720p画质的无损原始视频体积高达1588MB,而压缩成主流MP4/AVC文件后(2500Kb/s)所需的空间约为18MB,可以极大地减少存储和传输的空间。狭义的说,这类把点阵图片组成的动画“通过压缩来储存传输”和“通过解压缩来还原播放”的算法就是视频编码。在互联网时代,视频编码可算是大多数信息生产、发布、传输、播放过程中的核心技术。在今年年初,CES上的炫丽演示、谷歌的坚定推广,以及众多厂商的同时支持,让我们注意到了视频编码领域的新成员:VP9。
VP9是VP视频编码系列的新一代标准
VP系列编码初由On2 Technologies公司开发,该公司早期名为Duck Corporation,旗下早一代编码TrueMotion S开发于上世纪90年代初,被广泛用于世嘉土星(Sega Saturn)32位游戏主机的游戏作品中。1996年的TrueMotion RT编码用于实时录像,第二代TrueMotion 2编码支持了24bit的RGB色彩格式,1997年微软获得授权将TrueMotion 2集成在DirectX 5.0及后续版本中。2000年公司更名为On2的同时推出了TrueMotion VP3编码,开始尝试采用与MPEG编码一样的Y’CbCr色彩格式。
不过,VP3只是一个错漏百出的半成品,难以商用,于是On2把VP3连同版权一起捐献给了公益组织Xiph.Org基金会,后者经过辛苦地修正改良,将其发展成了源代码免费公开的Theora编码,作为.ogg文件格式的主推视频编码部分。
2001年1月On2推出VP4对VP3进行小幅修正,2002年2月推出的VP5已经成为当时高效的视频编码之一,在一年后由更成熟的VP6取代。2005年起VP6编码随着被嵌入Flash动画播放器而大红大紫,加上YouTube等互联网视频站点的兴起,帮助Flash播放器在互联网视频点播领域打败了RealNetworks、微软等竞争对手。VP6还曾经作为昙花一现的国产EVD的热门候选视频编码之一,帮助催生了国产自主AVS视频编码及标准集的研发。2005年推出的VP7自称编码效率超过H.264/AVC编码15%,同样授权给Adobe公司作为Flash播放器的内置视频编码之一。2010年2月谷歌以1.246亿美元并购On2,为了配合谷歌的Chrome浏览器及主推HTML5互联网战略,新一代的VP8作为开源视频编码免费发布,供任何个人和团体使用。通常认为,VP8的编码效率超越了H.264/AVC的基准设定版(Baseline Profile)且相当于或稍逊色于H.264/AVC的高设定版(High Profile,2005年标准)。始于2011年底的VP9是VP编码家族的新成员,VP9规范在2013年6月17日形成定案。在今年年初的CES上,我们看到了越来越多的厂商开始支持VP9,那么VP9究竟有何特殊之处呢?
弹性的区块划分与编码侦测
视频编码通常把一张画面细分成小矩形图块作为编码的基础单位,这就是宏区块(MacroBlocks)。VP9对每帧画面采用新一代的宏区块划分方法,在VP8大为16×16(单位为像素或色彩分量)宏区块的基础上,发展出了超级区块(Superblock)的设计。超级区块大可以为64×64,超级区块内可以再细分,用四叉树的结构安排这些区块,把每个超级区块细分成4块32×32的小区块,每个小区块也可以再分成4块更小的16×16区块,尺寸可以继续划分到小4×4宏区块的基础大小。这种设计使画面元素能被更优化地复用,也使得编码压缩效率直接提升约一成以上。
接下来是对每个宏区块中是否有可编码特征进行侦测。在宏区块同一帧画面内的可编码情况叫做帧内侦测(Intra Prediction)。VP9在帧内侦测环节继承了VP8对4×4区块的10个侦测模式,分别为直流、水平、垂直、TrueMotion快速、左对角线、右对角线、水平向上、水平向下、垂直向右、垂直向左。对于较大的8×8到64×64的区块,VP9提供了10个侦测模式,分别是直流、垂直、水平、TrueMotion,以及6个角度侦测,侦测角度分别约27度、45度、63度、117度135度、153度,新增的多角度侦测可以使编码效率提高7%以上。
侦测宏区块在帧与帧之间的变化叫帧间侦测(Inter Frame Prediction),侦测后输出代表运动方向和运动距离的运动向量(Motion Vector)。对于每个16×16及更大的区块,VP9允许有1或2个运动向量。VP8和H.264同代编码的运动向量可以表现1/4个像素的位置变化,而VP9支持1/4像素精度的同时,可适时提升一倍精度到1/8像素,能更有效地表现慢动作。编码以每帧头部标识中的设定来判别是使用1/4像素还是1/8像素精度。宏区块的明度、色度、浓度的变化在VP8中用高6阶差值滤波器来表现。VP9提升精度到8阶差值滤波器,增加了两个分别应对锐利变化和平滑变化的差值滤波器。对于屋顶和天空的交接这种高对比场景,锐利滤波器(Sharp Filter)产生锐利信号,以较少的空间保留锐利的画面。而侦测中的某处陡变异常,呈现和前后相邻帧不一致非自然的尖锐情况,能被平滑滤波器(Smooth Filter)有效地平缓,节省了空间。
为了改善侦测,VP9还使用了两次编码(2- Pass)的处理方式:第一次侦测出属于帧间(Inter)变化的块,第二次依据前次已识别的帧间块构成的未识别边界,对在帧内(Intra)处理的块和前次未能识别的帧间块进行再次比对侦测及编码,能提高帧内块的画质。对于识别宏区块和侦测运动矢量后,以已知信息仍不能完全重建一致的色彩信息,用DCT(离散余弦变换)和DST(离散正弦变换)等矩阵变换和量化记录其残留的变化情况。VP9把传统变换方式应用到较大区块的同时,还新增了ADST(不对称离散正弦变换)来更好地应对信号边缘的情况。
参考帧是在编码或解码下一帧时起到参照作用的对比帧。VP9和VP8类似,用了三种参考帧:以前一帧为参照的LAST_FRAME;以被判定为典型的更早前某帧为参照的GOLDEN_FRAME;以未来的某帧为参照的ALTREF_FRAME。由于为了避免使用MPEG专利,VP9没有采用可以在前后双向参照的B帧,而使用单向参考帧,好像显得VP9不足;但VP9新引入了复合预测(Compound Prediction)的方式,允许存在一些不会被显示的隐匿帧。隐匿帧上的宏区块允许存在2个运动向量,以隐匿帧为参考的其他帧上运动向量会和隐形帧上的对应向量求加权后的均值,而隐匿帧又可以被前后任意某帧做为参考帧。换句话说,复合预测即变相地实现了双向B帧,同时又规避了B帧的专利。
控制码率 提升画质
VP9允许每一帧使用大小不同的分辨率,在编码时会用8阶1/16像素精度的缩放滤镜对运动矢量编码,在解码播放时还原成统一的大小。在用于直播时,这样的功能允许传输中不间断调整码率,一定程度上改善了可适性。VP9对编码后的16×16及以上的宏区块增加了分段(Segmentation)功能,宏区块带有一个段标识(Segment_ID)来判断是否属于同一个段。段数据分散在各帧,上面记录对该段允许使用哪些参考帧、省略系数、量化因子、回环滤波强度等参数,能更好地避免冗余和应对不同的应用需要。比如取在多帧中的一系列区块为背景段,背景段由画面中不变化的区块组成,另行对背景段应用更高的画质参数,能局部提高画质和改善整体主观感观。
编码后把各种区块、运动向量、变换等输出数据使用熵编码器压缩。VP9在熵编码器上也做了改进,其沿用VP8的布尔编码器(Boolcoder)是一种在8bit码元上操作的算术编码,VP9改进为每帧头部都可以存储码元概率的更新信息,可以对编码器中已有的概率信息进行部分更新,使得VP9在帧层面上较前代有一定的自适应性,提高了压缩比。VP9也不再是单纯的有损压缩,还支持无损模式,可以做片源存储,不用担心画质损失。
为了适应多核多线程的硬件发展,VP9的并行解码能力也有所增强。其在帧头部有开启并行模式的标识,只有帧的头部信息需要被以序列方式解码,而各帧的内容可以放入不同的线程进行多线程并行处理。VP9还引入了板块(Tile)的概念,把画面按纵向分成2、4等偶数板块,每个板块也可以被放在不同的线程中分别编码或解码。
VP9支持的色彩空间标准有:Rec. 601、 Rec. 709、 SMPTE-170、SMPTE-240、sRGB。目前谷歌为VP9定义了两种档次的设定:Profile 0可以看成基准档次,支持常见的4∶2∶0色度抽样;Profile 1可以看成扩展档次,增加支持4∶2∶2和4∶4∶4的色度抽样,增加支持Alpha透明通道和用于3D的深度通道(Depth Channel)。
MPEG的每一代技术都是家喻户晓的行业标准,比如基于MPEG-1技术的MP3、VCD,基于MPEG-2技术的DVD、电视机顶盒及各种安防监控产品,基于MPEG- 4技术的MP4、HD DVD、蓝光、3GP手机视频和M4A/AAC音乐。国际标准化组织ISO在2013年11月25日发布了ISO/IEC-23008-2MPEG- H Part 2标准,标志着新一代MPEG- H的核心技术H.265/HEVC视频编码的终定型。在VP9同代编码中,H.265/HEVC视频编码也是目前唯一成熟可用的竞争者。和VP9由谷歌一家公司研发不同,HEVC早在2009年就开始征集多厂商提议,2010年初截止吸纳新成果并形成草案,经过两年反复修改测试,在2013年率先由国际电信联盟定型出台。
HEVC在整体特征上和VP9类似,甚至主要特点都相互对应。HEVC在上一代H.264的基础上引入了超级块相仿的编码树单元(Coding Tree Unit)结构,同样也引入了多角度侦测、二次预测编码、增大了滤波器的精度、同样进行了并行优化。对比VP9,HEVC体现出的区别更多是在实现编码所用到的技巧上。HEVC在帧内侦测上的角度侦测模式多达33个,比VP9多23个侦测模式,提高了压缩比,但也需要更多计算量。HEVC具有双向的B帧被更多的中间帧参照和复用。HEVC后期处理上多了SAO(样本自适应偏移值)滤波器,能更准确地还原像素。HEVC改进了适应上下文的算术编码CABAC,该算法从H.264开始已经独占鳌头,能根据码流特征来及时调整码元概率,压缩比达到同领域高,而且受专利保护。因此仅从技术层面看,HEVC目前仍是视频编码中的王者。
另外估计和前几代MPEG编码的情况类似,我们不难预计HEVC所属的MPEG- H标准集会继续推出配套的国际标准。比如对符合性测试的工具和方法标准、配套的流传输标准、配套的3D音频标准、配套的安全传输标准、配套的实时传输标准,都会加速HEVC在互联网以外的其他行业的应用。而且HEVC作为商业产品,也不吝惜采用各家的专利技术。由MPEG LA代理公司定义的HEVC专利池中已经有25家专利持有者。根据其授权协议,对每年前10万单元的(使用其编码器或解码器的软硬件)产品免收许可费,对每年第10万以上单元每个收取0.2美元的专利许可费,每年对单个企业收取的许可费封顶额为2500万美元。IT巨头如苹果、微软,由自身商业模式的推动,更容易选择HEVC。苹果作为HEVC主要技术贡献者和专利持有者之一,对HEVC的支持必定会不遗余力,其主要产品很快会普及对HEVC的支持。微软及其子公司诺基亚早在2013年3月HEVC终草案定型后就已经宣布支持HEVC,也随后推出了针对HEVC的DirectX硬件加速接口规格书。
面对HEVC的来袭,VP9也必须有真功夫才能抗衡。技术层面的革新让VP9在压缩效率上超越了前代的VP8和H.264,自称可以降低30%~50%的码率即可表现相同的画质,能以更低的带宽传输更清晰的画面,和HEVC相差无几。根据谷歌的测试,用250MHz以下的频率便可以实现2160p数字电影画质的硬件解码,已具备高效编码的所有特点。
让VP9适合互联网应用是谷歌的设计初衷。对于常见的互联网应用场景,VP9都有简易、实用的解决方案。在传输流格式方面,已有简单的IVF格式,仅仅在VP9编码数据加上报头就可以用于互联网传输。在容器文件格式上,可以使用Matroska(常见的.mkv)格式扩展的WebM格式,因此具有了Matroska套娃格式所具有的实现简单、适合流播放、高容错、扩展性强、数据冗余低等特性。音频方面,有源自Xiph.Org基金开发的高音质Vorbis音频编码和新一代适用于低码率人声和高品质音乐的低延迟Opus音频编码。
在2014年,以VP9与HEVC为代表的视频编码阵营对决将会继续
而在软件支持方面,Chrome浏览器从2013年2月第25版开始加入了用户自开启VP9支持的功能,到2013年9月的第29版起默认开启VP9支持。内核相同的360、搜狗、腾讯、遨游等浏览器现在虽然部分因为没有更新内核而暂时未能支持VP9,但一旦完成升级,VP9将直接登陆浏览器市场份额近4成的用户,几十亿浏览器将可以直接播放VP9视频。下一版的Android操作系统也会内置对VP9编码的支持,影响整个智能手机和平板电脑市场。WebM平台的数字版权保护和发布传输已经形成了建议性的可操作协议方案,作为标准可以直接应用。同时,谷歌也发布了VP9的硬件编码和硬件解码器供硬件商整合成硬件加速产品,使VP9的应用不限于互联网行业。
谷歌对互联网持开放性(Op e n)战略,以开放的软件平台标准——HTML5、开放的网络客户端——Chrome浏览器、开放的操作系统——Android和Chrome OS、开放的多媒体格式—WebP、WebM、VP8、Vorbis、Opus,形成了一整套开放的互联网技术,而新加入的VP9同样是以开放赢得多媒体领域的核心技术之一。VP9使用自由的BSD版权协议,可以直接用于包括商用在内的各种用途,也可以更改代码或整合创新,无须缴纳任何版权许可费。对于可能出现但尚未发现的技术专利问题,谷歌也作出开放的承诺。对比其他要支出成百上千万真金白银许可费的专利编码,VP9的综合优势不言而喻。
除了HEVC的强势以外,VP9从自身和外部都要应对来自多方的挑战。谷歌以快的速度开发VP9并推向市场,其编码方法鲜有标准文档,数据流格式都是以谷歌的源代码为准。这样以源代码为准的方式很容易把已有的软件缺陷(Bug)包括进去,也让另行实现VP9编码的厂商必须重现缺陷才能兼容。如果迟迟不出标准文档,其他厂商就不得不一直长期依赖谷歌源码。不过以谷歌的测试经验,加上Android系统的长期类似情况,我们相信未来标准文档终出台的可能性非常大,这类担心可能仅是暂时性存在的。
而落脚到国内市场,未来国产自主的AVS2视频编码标准也会是一个不容忽视的挑战。AVS标准下的第一代视频编码AVS1在2006年2月被批准成为GB/T 20090.2国家标准,随后在CMMB/CDMB手机电视、IP电视、卫星电视机顶盒终端等产品中推行。AVS承诺以每产品1元人民币的许可费授权整套技术,低于MPEG技术的单项逐项收费。尚在酝酿中的AVS2视频编码号称超越HEVC,将在2014年初结束小组讨论和进入草案提出阶段。如果AVS2以强势迅速到来,也说不定会让国内互联网及IT设备制造企业采用何种编码的“选择”上附加一种法规性义务。
与此同时,视频编码的技术一直在马不停蹄地发展中,如Xiph.org基金同样开源的Daala视频编码使用了LT重叠变换的新思路且号称效率超过VP9和HEVC。未来视频编码必然会引入数量更多更复杂的块侦测机制,随着硬件运算速度的提高,编码将会以提高复杂度换取空间的节省、以加大缓冲内存占用空间提升侦测的准确性、以更多线程的设计更优化进行并行运算、以可适性技术增强在线传输的稳定性和容错性,从而推动硬件更新换代和新应用方式的产生。或许将来会出现能经过简单定制适应各种行业应用需求的通用视频编码,而现在,至少VP9已经前进了一步。而随着Android系统的普及,以其为基础的智能手机、平板、智能电视等产品,也许同样会成为VP9的重要推动力。