Steve Jobs 在"Thoughts on Flash"一文中,談及網絡影音時,多次提到html5與H.264兩項標準。但是,到底html5是什么?Flash和H.264又是什么回事?所以,本文旨在解釋它們之間的關系,讓大家可以初步了解。
首先,引用Steve Jobs的一段話:
Adobe一再反復宣稱Apple的移動設備不能提供"完整的網絡體驗",因為網絡上75%的影片是Flash格式。但他們沒有說這些影片幾乎所有都屬于一個更為先進的格式:H.264。
單這一段,已經令人不知道他到底在說什么,那先讓我們來做個名詞解釋。Flash影片,也就是我們常見的FLV格式視頻,是一種常用的影片格式(Container),播放FLV時需要Flash Player。而H.264是影片編碼(Codec),適用于多種影片格式,像是QuickTime的MOV格式,Flash的FLV格式。而目前在 Youku等各大在線視頻網站上的FLV影片,大多采用H.264作為編碼,所以它們既是Flash,又是H.264。

了解兩者之間的差異之后,現在開始說明Flash與html5在在線播放上的差別。首先,讓我們談談電腦上的運作差異,以及穩定的糾結點。
電腦瀏覽器上兩者的差別在哪?又有哪些問題?
首先,讓我們用 Windows結合Google Chrome瀏覽器介紹播放Youtube視頻時的運作模式:

1,Flash:Youtube上的FLV視頻需要通過一個 SWF(Shockwave Flash)播放器播放,而這個播放器會調用Flash Player Plug-In來播放影片。
2,html5:YouTube 上的M4V影片直接使用標簽即可播放,而播放器是通過JavaScript編寫的,一切都是利用瀏覽器內建功能完成。
這兩種模式的優缺點,又可以用『穩定性』和『流暢性』來說明:
穩定性:
Flash Player最大的問題是容易假死,想必大家都會在玩游戲,看電影時遇到Flash Player出現問題的情況。之前,只要Flash Player一假死,就會連瀏覽器都一起死掉。于是,Google Chrome在推出的時候就一再強調每個程序都是獨立的,這樣一來,就算Flash Player假死,瀏覽器也不會收到牽連。之后的Mac OS X 10.6中的Safari也加入了這項功能,據說Firefox3.6.4也會加入。
但是,這樣的功能只是避免瀏覽器隨Flash Player陪葬而已,要是Flash Player穩定性不提高的話,問題最終還是沒有解決。而html5利用標簽和JavaScript來播放,不需要任何插件,這樣相對穩定很多。
流暢度:
另一件事是,當在線視頻由480P逐漸升級到 720P或者1080P的時候,光是播放就已經占用相當高的CPU資源。臺式機播放都有點吃力,更別提是CULV及ATOM的輕省本了。于是Flash Player 10.1版開始加入了硬解碼支持,利用GPU加速來降低CPU資源的占用。實際測試也證明,硬件加速是目前降低CPU占用的唯一辦法。

在這項測試中,Mac上的Safari播放html5影片時占用的資源相當少,主要是因為Safari遇到 H.264格式的影片時,會調用Mac 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除了穩定性問題,支持跨平臺(NO Linux)、跨瀏覽器硬解是比html5具有優勢。而html5最大的問題在于瀏覽器內建編碼不統一,這一點在下文再討論,現在看看移動設備的狀況。
移動設備:性能和電量很吃緊
Steve Jobs在文中也提及,目前大多的移動設備芯片都支持H.264硬解,而目前移動設備主流芯片幾乎都采用ARM架構。的確,ARM11、ARM Cortex-8、Cortex-9大多都支持H.264硬解,但Adobe也宣稱手機上的Flash Player 10.1將支持硬解。

但是就算支持硬解,影片播放和硬件之間隔了一層Flash Player的話,電池消耗又會是如何呢?依照FlashMobileBlog的實測,采用WiFi上網,Nexus One能看3個小時的Youtube視頻,但Nexus One官方數據中,單機播放影片的時間達7小時。出去無線連接耗用的電量,與Steve Jobs所提及的iPhone可播放10小時的H.264影片,但播放Flash影片僅有5小時,比例大概是2:1,可見Flash耗電確實是個問題。無論如何,再過幾天,Adobe將于Google I/O開發者大會上展示供Android使用的Flahs Player 10.1,也極有可能隨著Android 2.2版(Froyo)一起更新,到時候就可以見分曉。
不過,如果Adobe不能實際證明 Flash在移動設備上不耗電的話,通過html5直接在線播放H.264影片則是目前移動設備最佳的解決方案。
html5影片的糾結點:瀏覽器支持解碼不一

Steve Jobs發表公開信后,一名歐洲自由軟件協會(FSFE,Free Software Foundation Europe)的實習生Hugo Roy寫了一封公開信,認為H.264不是真正的開源標準,因為未符合五項該協會的定義。Steve Jobs回信表示:
所有的影片編碼都有著專利。Ogg Throra與其他"開放源碼"的編碼目前背后有著一個正在組織中的專利聯盟(注一)。不幸地,我們不能因為某件事物是開放源碼,就代表或承認它并未侵犯其他人的專利。開放標準并不等同于免授權費或開放原始碼。
到底為什么H.264不被Mozilla與Opera采用,這個還需要進一步說明。

1,H.264又稱作MPEG 4 Part 10,和MPEG 2一樣需要授權費,并統一由MPEGLA這個專利聯盟管理收取。使用MPEG 4標準比編碼/解碼都需要付授權費,一年產品總算在10萬個以后時免費,但超過10萬個的時候,每個產品將收0.2美金的授權費,超過500萬時,授權費降為0.1美金,上限則是500萬美金。
2,線上免費內容,如YouTube等視頻網站可免費使用到2016年。但如果提供租借電影,像NetFix,就要依照用戶數量收取授權費;如果用于PPV(Pay Per View)以及VOD(Video on Deman),像是MOD與BBTV數碼有線電視上的收費電影,超過12分鐘的內容,也要收取售價的2%授權費。最多以500萬為上限。
因為這樣的授權費用規定,支持GPL協議的Mozilla基金會,以及支持開源標準的Opera,都力挺開放源代碼的OGG Theora格式,而未內建H.264編碼。所以盡管它們都支持html5的標簽,卻無法播放H.264格式的視頻。
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影音的一匹黑馬。
結論:
1,移動設備上:Flash如果耗電問題沒有解決,html5與H.264硬件將會是未來較好的在線播放格式。
2,PC終端:如果主流瀏覽器沒有統一支持html5編碼,普及性將會無法和Flash比
3,Apple:以蘋果產品線的齊全及軟件硬件的配合,在產品上推廣html5不難。但要擴展出去有困難。
注一:微軟過去曾將WMP9編碼開放源代碼,結果導致許多公司要求編碼的權利。于是成立VC-1這樣的專利聯盟(Patents Pool),一共有16家公司組成,包括微軟。