陸瑋玨,葉德建
(復(fù)旦大學(xué),上海 201203)
責(zé)任編輯:閆雯雯
當(dāng)前,國際上Apple TV[1]和Google TV分別開始挑戰(zhàn)網(wǎng)絡(luò)電視市場(chǎng)。二者均采用“操作系統(tǒng)+云計(jì)算[2]”的軟件技術(shù)開發(fā)平臺(tái)推動(dòng)下一代網(wǎng)絡(luò)電視的發(fā)展,可見后端基礎(chǔ)架構(gòu)云化和前端操作系統(tǒng)這一設(shè)計(jì)理念確實(shí)是網(wǎng)絡(luò)電視領(lǐng)域未來發(fā)展的趨勢(shì)。
而在中國,網(wǎng)絡(luò)電視有一大類是多媒體展示框架應(yīng)用,以數(shù)字標(biāo)牌為例[3]。在這個(gè)細(xì)分領(lǐng)域的現(xiàn)狀中,后端基礎(chǔ)架構(gòu)通常部署功能單一的服務(wù)器,負(fù)責(zé)多媒體的管理和分發(fā),而前端則是硬件異構(gòu)的客戶端設(shè)備,負(fù)責(zé)計(jì)算、解碼和展示。相比于國際趨勢(shì),在中國的多媒體展示框架領(lǐng)域的設(shè)計(jì)中,后端基礎(chǔ)架構(gòu)沒有云端的概念,沒有很好地利用其強(qiáng)大的存儲(chǔ)空間和計(jì)算能力。而客戶端上也沒有任何可以屏蔽硬件異構(gòu)性的支持軟件平臺(tái),造成軟、硬件緊耦合的開發(fā)模式,同時(shí)使得應(yīng)用軟件在不同硬件設(shè)備上的移植性差。
針對(duì)這些不足,筆者提出一個(gè)面向下一代網(wǎng)絡(luò)電視的多媒體展示框架中間件。作為一個(gè)運(yùn)行在客戶端上的支持軟件平臺(tái),它與云化的后端實(shí)時(shí)交互,將狀態(tài)等信息存于云端。另外,由于在網(wǎng)絡(luò)電視上的操作系統(tǒng)還不成熟,同時(shí)作為多媒體展示應(yīng)用這個(gè)細(xì)分領(lǐng)域的支持軟件平臺(tái),無需像操作系統(tǒng)那樣強(qiáng)大而全面,因此采用中間件[4]來完成兼容多樣化硬件的跨平臺(tái)性。該中間件是核高基重大專項(xiàng)流媒體業(yè)務(wù)中間件的組成部分。
目前在中國的多媒體展示應(yīng)用領(lǐng)域中,中間件需要利用強(qiáng)大的云化后端基礎(chǔ)架構(gòu)來提高因客戶端設(shè)備計(jì)算受限引起的較差穩(wěn)健性。并且支持市場(chǎng)上多款主流客戶端硬件設(shè)備,如X86,Sigma,BroadCom,MStar等,還要打破軟、硬件緊耦合的開發(fā)模式,為上層應(yīng)用進(jìn)行多媒體展示提供統(tǒng)一的接口,從而便于實(shí)時(shí)性要求高的多媒體展示應(yīng)用的開發(fā)、維護(hù)和升級(jí)。
因此在設(shè)計(jì)之初,筆者針對(duì)以下3點(diǎn)進(jìn)行設(shè)計(jì):
1)首先考慮到客戶端設(shè)備計(jì)算和存儲(chǔ)能力有限但解碼能力強(qiáng),而云端有大量的存儲(chǔ)設(shè)備等特性,本中間件允許實(shí)時(shí)將客戶端的狀態(tài)交由云端存儲(chǔ),提高穩(wěn)健性。
2)其次,由于多媒體展示應(yīng)用通常是要將多種類型的媒體分屏組合展示,不同類型的媒體展示的實(shí)現(xiàn)大多與硬件相關(guān),而中間件又要對(duì)上層應(yīng)用提供統(tǒng)一的接口,因此將多媒體展示中與硬件相關(guān)部分抽象成適配層,并將不同類型的媒體展示抽象為不同的獨(dú)立控件展示。
3)由于多媒體展示應(yīng)用的高實(shí)時(shí)性,中間件將仿照Windows的消息機(jī)制來實(shí)現(xiàn)對(duì)象間的事件觸發(fā),并采用多線程的方式減少延遲。
圖1表明了整個(gè)系統(tǒng)的分層體系架構(gòu)。后臺(tái)是云端部署,而客戶端自底向上分別是底層硬件和操作系統(tǒng),中間件,多媒體展示應(yīng)用。中間件處于客戶端的細(xì)腰處,即其能支持各種底層硬件的客戶端平臺(tái),同時(shí)也為應(yīng)用提供商開發(fā)提供基于該中間件的應(yīng)用開發(fā)接口。同時(shí)除了應(yīng)用需要與云端的服務(wù)器進(jìn)行網(wǎng)絡(luò)交互,該中間件也需實(shí)時(shí)將狀態(tài)等信息發(fā)送給云端。
圖1 分層體系架構(gòu)圖
中間件的結(jié)構(gòu)模型分為3層:繪圖層、邏輯層和控件層。其中模塊劃分如圖2所示。
圖2 中間件的結(jié)構(gòu)模型圖
下面分別介紹各層的功能和模塊組成:
1)控件層位于該中間件的最頂層,是為上層應(yīng)用提供服務(wù)的主體,分別有視頻控件、圖片控件、文本控件等提供不同類型的媒體展示。同時(shí)為了便捷新應(yīng)用的開發(fā),可根據(jù)控件接口規(guī)范快速地實(shí)現(xiàn)一個(gè)新類型的控件,增加了可擴(kuò)展性。
2)繪圖層是為上層各個(gè)控件提供通用播放器和圖形庫接口的適配層,定義了通用播放器的接口和圖形庫接口,一旦移植到新的硬件平臺(tái)上,只有實(shí)現(xiàn)這些接口即可完成移植,從而允許上層的應(yīng)用開發(fā)與硬件無關(guān)。
3)邏輯層中,網(wǎng)絡(luò)管理、資源管理、線程管理、組件工廠、消息機(jī)制這5個(gè)模塊為其他上層模塊提供了基礎(chǔ)運(yùn)行環(huán)境。剩余模塊為控件的展示提供基礎(chǔ)模塊。
網(wǎng)絡(luò)管理屏蔽了不同硬件實(shí)現(xiàn)的差異。
資源管理則提供本地資源管理和遠(yuǎn)程資源下載功能。
線程管理則使用線程池的方式來并行處理一些除了展示邏輯之外較為費(fèi)時(shí)或可能引起等待的操作,并實(shí)時(shí)平衡所有線程的工作量,從而提高多線程的利用率。
該中間件設(shè)計(jì)了組件工廠和消息機(jī)制來模擬Win?dows的消息隊(duì)列,允許所有由組件工廠創(chuàng)建的對(duì)象能夠接受自定義的消息并立即處理,從而提高實(shí)時(shí)性。
指令解析負(fù)責(zé)解析規(guī)定格式的指令,生成記錄,并對(duì)任務(wù)集進(jìn)行添加、更新或刪除記錄的操作。
記錄是一條包含已經(jīng)播放了多少時(shí)間、在任務(wù)集合中的序列號(hào)、優(yōu)先級(jí)、單次展示時(shí)間、是否允許中斷后恢復(fù)、有效期、定時(shí)記錄的開始時(shí)間、定時(shí)記錄的結(jié)束時(shí)間和定時(shí)類型、具體展示資源等信息的文本字符。
任務(wù)集合則與控件綁定,一個(gè)任務(wù)集合中包含了對(duì)應(yīng)控件需要展示的所有記錄。一旦任務(wù)集合發(fā)生了刪除、更新等改變,則會(huì)發(fā)送消息通知其綁定的所有控件更新展示。
行為是記錄轉(zhuǎn)換的對(duì)象,分別有記錄對(duì)應(yīng)的不同屬性。
一個(gè)控件由行為組來管理各個(gè)行為,相同優(yōu)先級(jí)的行為在同一個(gè)行為組中,并以序列號(hào)排列。當(dāng)控件接收到任務(wù)集合發(fā)送的改變消息后,即可對(duì)應(yīng)更新自己的行為組,從而在行為組中重新調(diào)度,選出一個(gè)行為進(jìn)行展示。
圖3給出了控件、任務(wù)集合、記錄、行為組和行為之間的UML關(guān)系圖,從中可以總結(jié)一個(gè)任務(wù)集合包含多條記錄,并且能被至少一個(gè)控件綁定。而每個(gè)控件都有至少N個(gè)行為組,每個(gè)行為組對(duì)應(yīng)包含該優(yōu)先級(jí)的行為。這些行為都是由記錄轉(zhuǎn)換而來的。
一旦中間件運(yùn)行,其指令解析模塊會(huì)根據(jù)接受到的指令,為每個(gè)控件對(duì)應(yīng)的任務(wù)集添加、更新或刪除記錄。而任務(wù)集合發(fā)生改變后,以消息機(jī)制通知綁定的控件,控件則根據(jù)變化的記錄更新對(duì)應(yīng)的行為,然后從所有行為組中根據(jù)每個(gè)行為的屬性進(jìn)行調(diào)度,一旦發(fā)現(xiàn)某個(gè)行為比當(dāng)前展示的行為優(yōu)先級(jí)高,所需的資源文件已經(jīng)下載到本地,并且其能在當(dāng)前時(shí)間展示,則將停止當(dāng)前展示,并將新行為替換展示區(qū)中的行為,隨后控件則調(diào)用繪圖層的接口對(duì)該行為進(jìn)行展示。而當(dāng)一個(gè)行為展示結(jié)束(例如單次播放時(shí)間結(jié)束或視頻播放完畢等),則同樣調(diào)用繪圖層的接口停止展示,并將其從該控件的展示區(qū)中刪除,再重新調(diào)度展示下一個(gè)行為。
圖3 重要類之間的UML關(guān)系圖
控件的主要接口定義如表1所示。其中定時(shí)器是基于消息機(jī)制實(shí)現(xiàn),它允許目標(biāo)對(duì)象在指定時(shí)間過后接受到一個(gè)包含定時(shí)器類型的消息,從而作對(duì)應(yīng)處理。
表1 控件類中6個(gè)主要函數(shù)
每個(gè)控件在展示過程中,會(huì)實(shí)時(shí)將當(dāng)前展示的資源名稱、已經(jīng)播放了多長(zhǎng)時(shí)間等狀態(tài)存儲(chǔ)到云端,以便在斷網(wǎng)重連或客戶端死機(jī)等情況下,基于該中間件的上層應(yīng)用能根據(jù)云端存儲(chǔ)的狀態(tài)可靠恢復(fù),重新展示。
根據(jù)以上描述的中間件,筆者根據(jù)其提供的接口開發(fā)了一個(gè)網(wǎng)絡(luò)多媒體廣告應(yīng)用實(shí)例。它是一種數(shù)字標(biāo)牌系統(tǒng),可以集中管理,控制大范圍分布地點(diǎn)發(fā)布高標(biāo)準(zhǔn)的定制信息,集高清視音頻、圖片、文字等多種元素于一體,含輪播、插播、定時(shí)等靈活的播放方式。目前繪圖層使用QT實(shí)現(xiàn),支持sigma8653和X86兩個(gè)平臺(tái)。網(wǎng)絡(luò)多媒體廣告應(yīng)用的軟硬件部署如圖4所示。
圖4 軟硬件部署
管理服務(wù)器允許管理人員在管理終端對(duì)視頻、圖片、文本、布局等資源進(jìn)行在線編輯,同時(shí)發(fā)送指令給所有網(wǎng)絡(luò)多媒體廣告應(yīng)用。
當(dāng)網(wǎng)絡(luò)多媒體廣告應(yīng)用接受到指令后,即交由該中間件中的指令解析模塊,該模塊會(huì)根據(jù)指令創(chuàng)建對(duì)應(yīng)控件,并一一為每個(gè)控件初始化要展示的記錄的任務(wù)集,最后開啟控件,這樣,控件則會(huì)根據(jù)自身定義的調(diào)度邏輯一一展示。
為了考察中間件對(duì)應(yīng)用性能的影響,筆者做實(shí)驗(yàn)測(cè)試CPU使用率。在一臺(tái)四核的PC上,對(duì)比了基于該中間件開發(fā)的網(wǎng)絡(luò)多媒體廣告應(yīng)用和傳統(tǒng)軟硬件緊耦合開發(fā)的網(wǎng)絡(luò)多媒體廣告應(yīng)用的平均CPU使用率情況。圖5分別給出了兩個(gè)應(yīng)用在不同特點(diǎn)布局上的對(duì)比結(jié)果。對(duì)于多滾動(dòng)文本布局,CPU主要用于渲染和滾動(dòng)計(jì)算,可見使用跨平臺(tái)QT實(shí)現(xiàn)的滾動(dòng)比直接使用硬件GDI實(shí)現(xiàn)的性能高。對(duì)于包含時(shí)鐘、圖片和滾動(dòng)文本的混合布局,可以發(fā)現(xiàn)基于該中間件的應(yīng)用CPU使用率相對(duì)較低。而對(duì)于單視頻布局,由于基于該中間件的應(yīng)用采用QT的pho?no實(shí)現(xiàn)播放器接口,而硬件相關(guān)的應(yīng)用則采用VLC實(shí)現(xiàn),可見QT版本占用的CPU更高。
實(shí)驗(yàn)結(jié)果表明,基于中間件的設(shè)計(jì)不會(huì)對(duì)應(yīng)用的性能造成很大的影響。
網(wǎng)絡(luò)多媒體廣告應(yīng)用在使用該中間件的控件的展示過程中,會(huì)不時(shí)發(fā)送日志或狀態(tài)給云端的狀態(tài)服務(wù)器進(jìn)行存儲(chǔ),從而管理服務(wù)器可根據(jù)日志信息告知管理人員客戶端的運(yùn)行情況,主服務(wù)器也可以結(jié)合狀態(tài)信息允許重啟的網(wǎng)絡(luò)多媒體廣告應(yīng)用進(jìn)行狀態(tài)還原并繼續(xù)展示。
圖5 基于中間件的應(yīng)用與硬件相關(guān)應(yīng)用的性能比較
另外,由于云端存儲(chǔ)著每個(gè)客戶端上網(wǎng)絡(luò)多媒體廣告應(yīng)用的運(yùn)行狀態(tài),所以筆者還開發(fā)了一個(gè)簡(jiǎn)單的監(jiān)控應(yīng)用,通過接收云端的狀態(tài)來重構(gòu),還原指定客戶端上網(wǎng)絡(luò)多媒體廣告應(yīng)用的當(dāng)前展示情況,從而達(dá)到安全監(jiān)控的效果。圖6給出了一個(gè)PC監(jiān)控某機(jī)頂盒的效果圖,可以看到PC展示的畫面和由機(jī)頂盒控制的顯示器一致。
圖6 監(jiān)控效果圖
一般監(jiān)控程序都是實(shí)時(shí)接收被監(jiān)控客戶端的當(dāng)前播放狀態(tài),如視頻流、圖片等,導(dǎo)致網(wǎng)絡(luò)占用高帶寬。而通過該中間件將狀態(tài)交由云端存儲(chǔ)后,云端可以根據(jù)數(shù)據(jù)庫中被監(jiān)控客戶端的相關(guān)信息,結(jié)合狀態(tài)重構(gòu)出該被監(jiān)控客戶端的當(dāng)前播放內(nèi)容指令,從而只需把網(wǎng)絡(luò)占用帶寬低的指令發(fā)送給監(jiān)控程序即可。
筆者提出了一個(gè)面向下一代網(wǎng)絡(luò)電視的多媒體展示框架中間件的設(shè)計(jì),給出了一個(gè)基于該中間件開發(fā)的網(wǎng)絡(luò)多媒體廣播應(yīng)用實(shí)例。該中間件有以下4個(gè)特點(diǎn):
1)跨平臺(tái)性:其利用分層設(shè)計(jì)有效地屏蔽了底層客戶端的硬件異構(gòu)性,為將該中間件移植到新的客戶端硬件平臺(tái)提供了便利。
2)透明性:基于該中間件,多媒體展示應(yīng)用的開發(fā)更為方便,開發(fā)人員只需了解中間件向上提供的接口即可,無需知道客戶端底層的操作系統(tǒng)和硬件接口。
3)可擴(kuò)展性:該中間件具有可擴(kuò)展性,可添加新類型控件模塊來支持更多類型的多媒體文件的在線展示。
4)穩(wěn)健性:由于該中間件實(shí)時(shí)將上層應(yīng)用的展示狀態(tài)存儲(chǔ)在云端,可以根據(jù)這些狀態(tài)進(jìn)行恢復(fù)或監(jiān)控,從而保證上層應(yīng)用的可靠運(yùn)行。
[1]LEMAY S,KELLY S.User Interface forapplication managementfora mobile device:US2009/0307105 A1[P].2009-12-10.
[2]HAYES B.Cloud computing[C]//Communications ofthe ACM.New York,NY,USA:[s.n.],2008,51(7):9-11.
[3]ABI Research.US Digital Signage Market to Grow by One Third in 2009[EB/OL].(2009-03-20)[2011-09-15].http://www.biresearch.com/press/1385-US+Digital+Signage+Market+to+Grow+by+One+Third+in+2009.
[4]BERNSTEIN P A.Middle ware:a modelfordistributed system services[C]//Communications ofthe ACM.New York,NY,USA:[s.n.],1996,39(2):86-98.