这一篇文章以最深入浅出的方式解释了H.264与FLASH在网络串流影片上的优缺点,十分推荐大家阅读,原出处在此,作者:董福兴先生
Steve Jobs在”Thoughts on Flash“一文中,谈及网络影音时,多次提到HTML5与H.264两项标准。新闻整理中我们也预告将就“广告、影音、游戏”三方面应用来作深入分析。要是这些技术名词听得雾煞煞,看完这篇文章,就能搞懂在影音播放上,他们到底在争些什么?未来网络影音又会因此而引起什么轩然大波!
首先,借用Steve Jobs说的一段话:
Adobe一再反复宣称Apple的行动装置不能提供”完整的网络体验”,因为网络上75%的影片是Flash格式。但他们没说这些影片几乎所有都属于一个更为先进的格式:H.264。
光是这一段,可能就令人不晓得他在说什么,让我们先作名词解释。Flash影片也就是我们常见的FLV档,是一种影片格式(Container),播放FLV时需要Flash Player。而H.264是影片编码(Codec),可以适用于多种影片格式,像是QuickTime的MOV档、Flash的FLV档。而目前在YouTube等各大网络影音上的FLV档,多采用H.264作为编码,所以它们既是Flash,又是H.264。
▲影片编码/格式怎么分,看这图就能够了解。
了解两者之间差异以后,就能开始来说明Flash与HTML5在网络影片应用上的差别,首先,让我们谈谈电脑上的运作差异,以及问题的症结点:
首先,让我们以Windows配合Google Chrome浏览器说明播放YouTube影片时的运作模式:
这两种模式的优缺点,又可以由“稳定性”与“顺畅度”两项来说明:
Flash Player最大的问题就是容易当,想必各位读者们在玩游戏、看影片时遇过Flash Player出问题的经验。早先Flash Player一当,就会让浏览器一起当掉。于是Google Chrome一推出时,就强调每个程序都是分离的,如此一来浏览器就不会跟随一起挂掉。随后Mac OS X 10.6的Safari也加入这功能,Firefox 3.6.4版也会加入。
▲Google Chrome是最早加入外挂分离功能的浏览器,Flash当了也不要紧。
然而,这样的功能仅是避免浏览器与Flash Player陪葬,要是Flash Player的稳定性不改进的话,问题还是没解决。而HTML5利用
另一件事是,当网络影片从480p,逐渐支援到720p与1080p时,光是播放影片就要耗用相当多的CPU计算资源。台式电脑有时播放都相当吃力,更别提CULV笔电以及使用ATOM的小笔电了。于是Flash Player 10.1版中加入了硬件解码支援,利用GPU加速来降低CPU资源的耗用。之前也有实际测试数据比较Flash与HTML5谁比较吃资源,显示出,不管哪一种技术,硬件加速是降低CPU耗用的唯一解。
在该项实测中,Mac上Safari播放HTML5影片耗用资源相当少,主要是因为Safari遇到H.264影片时,会呼叫OS X内的QuickTime X进行解码,而QuickTime X就直接支援硬解。当时Apple尚未放出硬解API,使得Flash Player 10.0与10.1完全没有差异。日前Apple公布硬解API,Adobe也随即推出Flash Player 10.1 Gala For Mac,加入硬解功能,CPU耗用也明显减少。微软也宣告将在IE9中支援HTML5影片播放与H.264硬解。
比较这两点,Flash Player除了稳定性问题,支援跨平台(不包括Linux)、跨浏览器硬件解码是比HTML5具有优势。而HTML5最大的问题在于浏览器内建编码不统一,这一点后面会再讨论,让我们看看在行动装置上的状况。
Steve Jobs文章也谈到,目前大多数的行动装置芯片都支援H.264硬件解码,而目前行动装置主流芯片几乎都采ARM架构,T客邦过去也有不少文章介绍ARM是什么。的确,ARM11、ARM Cortex-8、Cortex-9大多支援H.264硬件解码,但Adobe也宣称手机上的Flash Player 10.1将会支援硬解。
但是就算支援硬解,影片与硬件间夹了一个Flash Player当中间层时,电池电力表现又如何呢?很可惜的,目前T客邦未能取得实机测试。但是依照FlashMobileBlog的实测,采用Wi-Fi连线,Nexus One能够观看3小时的YouTube影片,但Nexus One官方数据中,单机影片播放可长达7小时。扣去无线网络串流消耗的电力,与Steve Jobs所提及的iPhone可播放10小时H.264影片,但播放Flash影片仅有5小时,比例大致是相同的2:1,可见得Flash耗电的确是个问题。无论如何,再过几天,Adobe将于Google I/O开发者大会上展示供Android使用的Flash Player 10.1,也极有可能随着Android 2.2版“Froyo(Frozen Yogurt)”一起更新,届时就见真章。
不过,如果Adobe不能实际证明Flash在行动装置上不耗电的话,透过HTML5直接串流H.264影片还是目前行动装置的最佳解决方案。
▲Adobe曾于年初WMC大会上展示搭载Flash Player的Android手机(来源:Slashgear)
▲随着微软的表态,这次不能说IE “Who Care“了(注一)。
Steve Jobs发表公开信后,一名欧洲自由软件协会(FSFE,Free Software Foundation Europe)的实习生Hugo Roy写了一封公开信,认为H.264不是开放标准,应符合五项该协会的定义。Steve Jobs回信表示:
所有的影片编码都有着专利。Ogg Theora与其他”开放源代码”的编码目前背后有着一个正在组织中的专利联盟(注二)。不幸地,我们不能因为某件事物是开放源代码,就代表或承认它并未侵犯到其他人的专利。开放标准并不同于免授权费或开放源代码。
当Firefox内建OGG编码时,我们就曾写过文章说明编码的问题;介绍YouTube时,也曾经说明过各家浏览器支援的编码不一。不过到底为什么H.264不受Mozilla与Opera所采用,还要进一步说明才行。
▲要在浏览器内使用H.264?拿出五百万美金来吧。
因为这样的授权金规定,支持GPL协定的Mozilla基金会,以及支持开放标准的Opera,都力挺开放源代码的OGG Theora格式,而未内建H.264编码。所以尽管它们都支援HTML5
HTML5影片在行动装置上,除了微软Windows Mobile系统上的IE不支援HTML5外,其他采用WebKit核心浏览器的手机也大多支援H.264编码,成为共通格式没太大的问题。但是回到电脑上时,毕竟Opera是商业公司,不排除未来内建H.264的可能;但Mozilla基金会就会变成推动上的铁板一块,全球占30%的Firefox使用者,就是看不到H.264编码的影片。
而Google,将会是打开这僵局的重要角色。Google去年并购了On2这家研发影片编码的公司,并且传言将会于Google I/O大会上,将旗下的VP8编码开放源代码。如此一来,具有接近H.264编码低流量、高品质,又开放源代码的VP8,将有成为一统HTML5影音的黑马。
然而,Google若要推动VP8编码,Opera与Mozilla基于支持开放格式应该会加入支援,微软我们不确定,但依照Steve Jobs力挺H.264的态度,当然不会妥协。不过Google手上的YouTube持有40%的网络影片,只要YouTube上的内容逐渐由Flash、H.264转向VP8,就会造成实质(de facto)的压力,让各家都加入支援。但这样会不会与Google “Do no Evil”的信条相冲突呢?月中Google I/O大会上见真章。
▲微软CEO Steve Ballmer的三屏一云概念,正好可以用来说明Flash与HTML5的战争。
不过,就笔者个人的预测,Google将VP8开源化的主要目的并不是为了让它成为HTML5的编码标准,而是为了进军电视市场作准备。首先,早在数年前,Google Adsense就推出的InVideo广告,能在YouTube影片播放时让你自行播放广告。今年一月,YouTube也推出租借影片服务,首批影片就是日舞影展2010年的影片。三月中,华尔街日报报导Google将与Intel、Logitech、Sony合作进攻电视与机上盒市场,同样也会在Google I/O上发表。
虽然目前还不知道Google打算怎么跨足电视领域获利,但是前面提到H.264繁琐复杂的权利金规定,Google将VP8编码开源化后,自然就不需要付给MPEG LA组织这笔钱。至于VP8会不会推广成为HTML5影音编码标准呢?慢慢来吧。同时也别忘了,Apple去年不断传出将提供网络电视订阅服务,配合旗下的AppleTV与iAd平台,甚至i系列产品与App Store,未来在电视这领域,又会是一场激战。
当然,三屏一云只有一朵云,YouTube一则影片上传,光是FLV格式就十种,加上供HTML5使用的H.264版本,就足以让占用的容量爆增。如果VP8、OGG Theora编码都要支援的话,想必就算是Google也会倍感沉重。而网络影音由过去QuickTime、Real、WindowsMedia三雄鼎立,到Flash以高普及率一统天下为止花了非常长的时间;要是HTML5的编码格式是合久必分的必然趋势,那也希望别让大家等得太久。尽快催生出共同标准才是最重要的事。
▲根据Encoding.com统计,H.264占整体网络影音66%,是目前实质上的赢家。
结论大致上有四点:
※注一:IE9虽然支援HTML5
※注二:微软过去曾将WMP9编码开放源代码化,结果各家公司都来要求编码的权利,于是组成了VC-1这个专利联盟(Patents Pool),一共由16家公司组成,微软也包含在内。