作者:章立(Leon Zhang) ,ARM公司家庭軟件架構(gòu)師 在第一篇中,我們分享了數(shù)字家庭軟件平臺(tái)的發(fā)展趨勢和特點(diǎn);在第二篇中,我們歸納了將Android移植到電視、機(jī)頂盒平臺(tái)需要面對的五大技術(shù)挑戰(zhàn)并重點(diǎn)探討了挑戰(zhàn)1 : 符合電視體驗(yàn)的2D/3D圖形性能和用戶交互模式方面的挑戰(zhàn)。在本篇中,我們將一起來繼續(xù)分析其他的技術(shù)挑戰(zhàn)。 * 挑戰(zhàn) 2 : 適合大屏的豐富多媒體影音體驗(yàn): Android設(shè)計(jì)時(shí)是以移動(dòng)手持設(shè)備為目標(biāo)的,因此并沒有考慮作為家庭娛樂中心的電視和機(jī)頂盒的多媒體影音需求。在下述方面需要改進(jìn): o 更加優(yōu)化的多媒體框架; o 支持更多的音視頻文件格式和容器; o 支持更多的音視頻編解碼標(biāo)準(zhǔn); 在Android的版本更新進(jìn)化過程中,Android使用過兩套多媒體框架:OpenCore和Stagefright。 在Gingerbread之前使用的是OpenCore(在Froyo中,OpenCore和Stagefright同時(shí)存在),之后 Stagefright完全替換了OpenCore。相比較而言,Stagefright架構(gòu)更加簡單,添加新的feature,新的parser更加容易。圖一描述了多媒體框架在Android整個(gè)軟件架構(gòu)中的位置。 圖一 從Froyo到Gingerbread Android多媒體架構(gòu)的變化 針對多媒體框架的修改和定制,一般我們有三個(gè)選擇: 第一,直接在OpenCore或者Stagefright上進(jìn)行修改或者定制。這個(gè)選擇相對簡單,只需要在相應(yīng)的框架上做相關(guān)的修改。缺點(diǎn)是由于Stagefright支持的文件格式和編解碼標(biāo)準(zhǔn)較少,需要一定的工作量來支持一些家庭娛樂中常見的多媒體格式和編碼,同時(shí)也不便于重用已有的一些成果。 第二,集成已有的成熟的開源多媒體框架,比如Gstreamer或者FFMPEG。 這樣做的好處是可以最大程度的利用已有的資源和成果;如果是選擇集成 Gstreamer的話,則有大量的Plug in可以利用。圖二表述了將Gstreamer集成到Android之后的多媒體架構(gòu)。 圖二 集成Gstreamer的Android多媒體架構(gòu) 第三,集成商業(yè)或者私有的多媒體框架。 ARM的合作伙伴特別是在多媒體方面有多年積累的伙伴,會(huì)希望將自己私有的多媒體架構(gòu)集成進(jìn)Android, 一方面,他們對私有架構(gòu)的性能非常自信;另一方面也可以重用自身很多已有的成果,形成差異化。另外一方面,ARM的軟件合作伙伴也提供了一些商業(yè)的多媒體框架供選擇, 比如VisualOn推出的VOME。 在考慮過選擇何種方案定制多媒體框架后, 我們來看看作為家庭娛樂中心的電視、機(jī)頂盒對所支持的多媒體格式的需求與Android自身支持能力之間的差異。圖三到圖五分別列出了電視平臺(tái)在音視頻文件格式(容器)和編碼解碼格式的主流需求與Android 3.0原生能力之間的差異。 圖三 Android TV平臺(tái)對音視頻文件格式的需求與Android 3.0原生能力的差異 圖四 Android TV平臺(tái)對音頻編解碼格式的需求與Android 3.0原生能力的差異 圖五 Android TV平臺(tái)對音頻編解碼格式的需求與Android 3.0原生能力的差異 從上面三張圖的比較,我們可以看出Android 3.0原生支持的格式與電視平臺(tái)對媒體文件格式和編解碼格式的主流需求還有不小的差距,彌補(bǔ)這些差距正是將Android移植到互聯(lián)數(shù)字家庭必須開展的工作。 * 挑戰(zhàn) 3 : 集成數(shù)字電視相關(guān)功能: o 集成數(shù)字電視協(xié)議棧,比如DVB-T,DVB-C, ATSC等; o 針對數(shù)字電視功能擴(kuò)展API接口; 截至到Android 3.1, Android內(nèi)沒有集成任何數(shù)字電視協(xié)議相關(guān)的協(xié)議棧, 如DVB-C/T/S 或其他。 因此如何集成DTV/STB 相關(guān)協(xié)議棧也是Android TV/STB 開發(fā)過程中不得不面對的問題。由于各個(gè)國家,各個(gè)地區(qū)的數(shù)字電視標(biāo)準(zhǔn)存在較大的差異化,因此對于數(shù)字電視相關(guān)協(xié)議棧的集成需要根據(jù)實(shí)際需求開展。一般來說,開發(fā)Android TV / STB 的合作伙伴具備一定的數(shù)字電視/機(jī)頂盒開發(fā)經(jīng)驗(yàn),將軟件組件集成進(jìn)去技術(shù)上難度不大,包括對CA的集成。 圖六從架構(gòu)的角度描述了數(shù)字電視相關(guān)軟件組件的集成到Android后的情形。 圖六 集成了數(shù)字電視相關(guān)組件的Android架構(gòu) 從上圖可以看出,除了需要集成相關(guān)的C/C++ 庫到Library這一層外;在Application Framework這一層也需要做相應(yīng)的封裝將相關(guān)的API暴露給應(yīng)用層。 關(guān)于如何實(shí)現(xiàn)和定義Android TV數(shù)字電視功能相關(guān)的API,目前各家Android TV的廠家都沒有標(biāo)準(zhǔn),這也是Android TV/ STB最大的風(fēng)險(xiǎn)和挑戰(zhàn)之一。 目前在Android TV/STB中實(shí)現(xiàn)數(shù)字電視相關(guān)的API大致有兩種方式(不限于兩種): * Java Application + Customized Application Framework + JNI + DTV/STB Specific Libraries * Browser (HTML5 + JavaScript) + C/C++ DTV/STB Specific Libraries 第一種方式如圖六所示,在Application Framework這一層對一系列JNI進(jìn)行封裝,形成數(shù)字電視功能相關(guān)的Java Level的Class; 第二種方式,通過修改Webkit,讓JavaScript去call 相關(guān)的C level API從而將數(shù)字電視的功能嵌入到瀏覽器網(wǎng)頁之中。 圖七和圖八給出了第一種方式的一個(gè)示例, 包括封裝哪些類以及相應(yīng)的Data Flow的一個(gè)示例。 圖七 示例 : 新增的數(shù)字電視功能相關(guān)的Java Package/Class 圖八 示例 :新增的數(shù)字電視功能相關(guān)的Java Package/Class的數(shù)據(jù)流 * 挑戰(zhàn) 4 : 推動(dòng)應(yīng)用開發(fā)者開發(fā)適合于TV的Android應(yīng)用; Android TV/STB 能否真正取得商業(yè)的成功,極大程度上取決于Android TV Application Store能否成功。目前雖然Google Android Market上已經(jīng)有了20多萬的應(yīng)用,但是沒有一個(gè)應(yīng)用是真正為電視量身定做的。換句話說Android TV需要自己的應(yīng)用和應(yīng)用商店! 那么,如何推動(dòng)應(yīng)用開發(fā)者開發(fā)適合TV的Android應(yīng)用? 在2011年6月21號ARM在深圳舉辦的Android TV/STB 技術(shù)交流會(huì)上,來自于國內(nèi)主流的運(yùn)營商,芯片商,電視系統(tǒng)廠商,軟件設(shè)計(jì)公司的代表就這個(gè)問題展開了深入的討論。其中有幾個(gè)共識一起分享一下: 第一, 需要形成相對統(tǒng)一的Android TV的API規(guī)范; 至少要有標(biāo)準(zhǔn)化的Android TV/STB SDK 或者 NDK, 包括Emulator; 第二, 需要各家電視系統(tǒng)商家,包括運(yùn)營商能以共享的心態(tài)來推動(dòng)應(yīng)用市場的建設(shè);各家維護(hù)各家的應(yīng)用市場難以支撐Android TV的商業(yè)成功; 第三, 需要形成靈活的商業(yè)模式吸引應(yīng)用開發(fā)者開發(fā)Android TV的應(yīng)用; 第四, 針對TV的Android應(yīng)用要充分考慮TV和用戶交互方式的特點(diǎn), 從最簡單的“上下左右確認(rèn)返回”六個(gè)鍵做起; 第五, 需要推動(dòng)Android TV相關(guān)的便利的開發(fā)工具在應(yīng)用開發(fā)者的使用 雖然很多共識還需要進(jìn)一步的細(xì)化,更需要落實(shí);但所有的合作伙伴都已經(jīng)意識到對于Android TV或者說智能電視來說,應(yīng)用是王道;而要推動(dòng)應(yīng)用的發(fā)展和繁榮,必須抱著一種開放和共享的心態(tài)! 在下一篇(最后一篇)中, 我們會(huì)繼續(xù)探討將Android帶入互聯(lián)網(wǎng)數(shù)字家庭的挑戰(zhàn)5 : 如何部署內(nèi)容保護(hù) 以及Android TV和GoogleTV的一些比較。(第三篇完) Leon Zhang, Home Software Architect - Strategic Software Alliance, ARM, Leon has many years of engineer and project leader's experience in a range of products, including DVR, STB, DTV, IPTV and SmartTV(e.g. GoogleTV). Being Home Software Architect, he specializes in the increasingly complex software stacks required to power the next generation of internet connected, smart TV and digital home.And being a member of Strategic Software Alliance, he is helping to build a strong software ecosystem for ARM Home partners. Leon graduated from Tongji University with the degree of Master . He is currently based in Shanghai, China. 章立(Leon Zhang) 是ARM的家庭軟件架構(gòu)師 ,同時(shí)他也是ARM戰(zhàn)略軟件聯(lián)盟部門的一員. Leon 擁有多年產(chǎn)品開發(fā)和項(xiàng)目管理經(jīng)驗(yàn), 曾經(jīng)參與了數(shù)字錄像機(jī)、機(jī)頂盒、數(shù)字電視,網(wǎng)絡(luò)電視以及智能電視(如GoogleTV)等產(chǎn)品的開發(fā)。作為家庭軟件架構(gòu)師,他專注于下一代互聯(lián)網(wǎng)智能電視及數(shù)字家庭的軟件架構(gòu). 而作為戰(zhàn)略軟件聯(lián)盟的成員,他致力于為ARM家庭應(yīng)用市場的合作伙伴建立強(qiáng)大的軟件生態(tài)系統(tǒng)。 Leon 碩士畢業(yè)于同濟(jì)大學(xué)。 他的工作地點(diǎn)在中國上海. |