文 / 金尹 VP8是视频压缩解决方案厂商On2推出的视频压缩格式。今年年初,Google完成了对On2的收购,随即开放了VP8视频编码技术源代码并免费提供给开发者使用。但业界对此一直褒贬不一,本文作者从多个角度进行阐述,对VP8的前途与发展提出自己的看法。 三个月之前Google推出了VP8,网络上叫好叫骂的都有。那么VP8的前途到底如何呢?从目前市场上各种信息进行分析推理这个问题也不难回答。 VP8的推出是相当仓促的,它的原生编解码器性能非常糟糕。其实性能不是主要的问题,H.264的官方解码器JM的效率也很低。但是经过几年业界的研究和改进,特别是开源社区的贡献,主流的X264等解码器的性能已经相当不错了。但我们要看到JM和VP8之间的差别。JM实现目的不是为了实用,而是在功能上尽可能的描述出整个H.264的标准。严格的来说它只是H.264说明书的一部分。而VP8的代码则不同,它的代码是经过一定程度“优化”过的,有些模块甚至是高度优化的比如算术编码,这恐怕是一个半成品的显著特征。再来看VP8的标准文档,这恐怕是网络上诟病最多的问题。我看过MPE4、H.264、RMVB、VC-1、Dirac,甚至它的前代VP3/Theora,没有哪一个标准的文档写的如此之差:格式不清,大段大段的复制C代码作为说明。这样看来 On2的工程师还没有准备好把VP8纳入标准化的阶段,甚至还可能仅仅是处在一个半成品阶段就给Google赶鸭子上架推出来。由此可见,Google推VP8是出于市场策略上的考虑,而不是VP8本身的技术程度已经可以达到或者超过了H.264。我估计是为了回应日益加快的HTML5标准的制定步伐。 我们再来看看VP8的具体内容。VP8发布后的3天,x.264社区的工程师,就对VP8的核心算法进行了剖析,随之网上广为流传。我汇总了一下他们的一些观点(如下表)。
他们这些观点虽然有力,但是却有些无的放矢。因为VP8的战略目标并不在高清离线视频领域。从这张表里,你可以很清晰地发现,VP8所删除的特性大多数都是涉及到高清/离线视频。这些特性对于PC上观看高清视频是特别有用的,但是对于低带宽视频却没有太大用处。但是这并不表明VP8没有什么问题。 现在很多程序员认为VP8的发布对Google和开源社区是一个巨大的利好。有了一个基本上可以与H.264比肩的格式,那么凭着Google Always Beta的作风以及开源社区的对代码的持续改进,现VP8可以迅速的赶上H.264。这是一个过分乐观的观点。 首先一点是专利问题,假设Google能解决专利问题是不现实的。专利是一个法律专业的问题,具体的分析还是要请教律师。但是从很多其他的公司的尝试来看,其他公司都搞不定的事情,我们凭什么假定Google能搞定?开源社区还有一种乐观的观点是,有专利问题更好,只要私人公司提出专利,就是帮开源社区发现专利漏洞,开源社区就能重写代码绕过去。这也是一厢情愿的想法。最直接的例子就是Frogent公司对JPEG的专利诉讼,它并不是在JPEG成为标准时候就立刻进行诉讼,而是等JPEG在网络上大规模应用了多年后,突然发难。这时无论你修不修改算法,都已经不重要。市面上大大小小的软硬件公司都已经掉进它的坑里去了。另外我们也必须看到现在MPEG-LA的收费策略也日益趋向灵活,像YouTube这样的不收费的视频网站,他们是不收取专利费的。如果为了应对VP8的竞争,不改变收费策略对他们也没有太多的损失。 抛开专利问题不谈,从软硬件的发展趋势来说,VP8竞争的时间窗也是极为短暂的。因为我个人觉得VP8在追求两个完全相反的目标——低带宽网络视频与开源策略。 如果以目前PC平台上的低带宽网络视频以及HMTL5作为主要目标,VP8的确是一个不错的替代品。我完全相信Google和开源社区能够把现在的VP8做到最好。毕竟X264就是一个成功案例。但是我们必须面对这样一个问题,目前我们处于网络速度大提升的过程中。美国的普遍的宽带速度都已经达到了3.8M,5~10M的带宽正在迅速的普及。即便是中国这样一个网络基础设施相对落后的国家,在上海北京这些城市都已经开始推广5~8M的第二代宽带。带宽对于视频清晰度的制约会越来越小,网络视频会从现在的主流的360p、480P向720p、1080P发展。从技术方面来说VP8对H.264构成威胁只有两三年,甚至更短。而开源社区/Google自身要把VP8从画质压缩率速度优化到足以匹敌H.264,仍然需要极长的时间。就目前VP8的状态来看,业界对他们的标准规范的消化都需要漫长的时间,留给VP8冲击市场的时间并不是很充裕。720p时代如果如约来临的话开源社区又做何设想?等待Google的VP9、VP10么? 低带宽网络视频更大的潜在市场应该是手持设备和无线视频市场。在这个市场上,带宽的提速相对来说缓慢的多,360p仍然在长时间内占据主导地位。但是在这个市场上VP8的前景仍然是不容乐观的。手持设备上必须考虑,发热量、功耗、用电的问题。如果采用ARM这样的通用CPU进行解码。由于它们本身不是为视频编码进行专门优化过的势必会增加功耗降低电池使用时间。而专用的视频解码硬件则可以在解码效率、质量,以及发热功耗、用电问题上做全方位的平衡,因此搭配专用的解码硬件是目前的移动领域的主流方案。目前市场上H.264的硬解码硬件已经极为的普及。与软件开发极为不同,芯片的设计制造是需要极大的成本的,VP8的开源策略并不能占有太多的优势。从最初的IC设计,到最后的流片,是一个相当漫长而昂贵的流程。如果VP8不能在短时间出现一个稳定的版本,而仍然按照Always Beta的方式发布。那么很难有IC厂商愿意跟着VP8后面频繁的更换固件设计。再从投资的角度保护来看,目前很多的专用芯片已经能够支持到H.264的High Profile,也就是说即便无线视频领域也进入720p的时代,那么这些硬件设计仍然可以使用,而VP8的专用芯片则不得不进行大量的升级。现在已经完全稳定的H.264则完全没有这些问题。另外软件算法的专利并不能涵盖硬件电路的设计专利。比如DCT的快速算法在软件领域是没有专利问题的,但是在硬件电路的制造上是属于MPEG-LA的专利。最为重要的是,手持设备上的空间面积、发热、功耗决定了设备厂商不太可能搭载2块以上的硬解码芯片。他们只能两者取其一,要么H.264要么VP8。这也是为何Jobs坚决反对VP8的原因之一。 作者简介: 金尹(Trustno1),曾经在电信领域工作6年,长期从事电信级Boss系统、CTI、IVR系统的研发。《Erlang程序语言设计》一书译者。2009年加盟盛大创新院任研究员,目前转向高性能视频编解码算法、并行计、高性能图形芯片和通用计算的研究。 (本文来自《程序员》杂志10年08期) 《程序员》11期精彩内容预告:互联网架构集结号 http://www.programmer.com.cn/4218/ 《程序员》订阅 http://dingyue.programmer.com.cn/