蘇征遠(yuǎn),易 燕,戴祖誠
(昆明學(xué)院 物理科學(xué)與技術(shù)系,云南 昆明 650214)
隨著云計算、物聯(lián)網(wǎng)技術(shù)的興起,特別是3G技術(shù)開始在我國廣泛應(yīng)用,使人們隨時隨地接入互聯(lián)網(wǎng),享受24小時在線的服務(wù)成為可能。同時為了滿足人們對于更高質(zhì)量影音感受的要求,多媒體信息處理技術(shù)正在以前所未有的速度迅猛發(fā)展,各種數(shù)字視頻技術(shù)已經(jīng)被應(yīng)用于大眾的日常生活中[1]。隨著社會經(jīng)濟建設(shè)的需要,各種定制化、功能各異的嵌入式設(shè)備大量出現(xiàn),不僅方便了人們的生活,也為各種技術(shù)應(yīng)用找到了新的領(lǐng)域?,F(xiàn)在,各種通信設(shè)備特別是智能手機等嵌入式終端設(shè)備的不斷出現(xiàn),使得基于多媒體的應(yīng)用能夠?qū)崿F(xiàn),如可視電話通信、網(wǎng)絡(luò)實時手機會議、終端視頻監(jiān)控等[2]。
目前,基于TCP/IP的互聯(lián)網(wǎng)視頻點播已經(jīng)成為了流行趨勢,無論是技術(shù)上還是制度上都正趨于成熟,各項標(biāo)準(zhǔn)也逐漸開始建立。但是網(wǎng)絡(luò)視頻還都是在PC上觀看,而對于屏幕狹小、網(wǎng)絡(luò)連接不穩(wěn)、資源有限的嵌入式設(shè)備來說,如何設(shè)計出符合嵌入式特點的流媒體播放系統(tǒng)成為了在線視頻播放是否能夠在嵌入式設(shè)備上成功的關(guān)鍵。嵌入式流媒體播放系統(tǒng)中,處理器和操作系統(tǒng)必須緊密配合,系統(tǒng)應(yīng)該具備視頻硬編解碼能力、網(wǎng)絡(luò)視頻傳輸和調(diào)度、能夠自動控制流速率等強大功能[3]。隨著3G網(wǎng)絡(luò)的進(jìn)一步覆蓋,網(wǎng)絡(luò)質(zhì)量的不斷提高,嵌入式流媒體播放系統(tǒng)應(yīng)用前景非常廣闊,正成為行業(yè)新的利潤增長點之一。
互聯(lián)網(wǎng)是IP分組交換為基礎(chǔ)進(jìn)行連續(xù)的異步傳輸,待各個分組到達(dá)目的主機后再根據(jù)分組序列進(jìn)行組包,但對于在線音頻、視頻文件,往往其所在存儲空間很大,在網(wǎng)絡(luò)中傳輸需要被分解為很多IP包,又網(wǎng)絡(luò)狀態(tài)甚至網(wǎng)絡(luò)拓?fù)涠际莿討B(tài)變化的,每個包經(jīng)過的路由可能不盡相同,所以到達(dá)客戶端的時間延遲也不盡相同,有時候先發(fā)的數(shù)據(jù)包還有可能后到。因為這個原因,必須使用緩存技術(shù)來彌補時間延遲和網(wǎng)絡(luò)抖動的影響,最大程度保證數(shù)據(jù)包可以按正確的順序排列,從而使多媒體數(shù)據(jù)不間斷地連續(xù)輸出,減小因為網(wǎng)絡(luò)暫時擁塞而使播放出現(xiàn)停頓的影響。一般情況下,每個多媒體流所需的高速緩存容量并不龐大,再者高速緩存一般使用環(huán)形鏈表數(shù)據(jù)結(jié)構(gòu)進(jìn)行實現(xiàn),不會出現(xiàn)溢出的情況;通過丟棄已經(jīng)無用的、播放過的片段,將后續(xù)尚未播放的內(nèi)容覆蓋之前的內(nèi)容就可以使高速緩存循環(huán)利用[4]。
如圖1所示,現(xiàn)在比較流行的流媒體播放過程一般如下:用戶打開Web瀏覽器選擇某一流媒體Web服務(wù)器后,此時Web瀏覽器會與服務(wù)器之間使用HTTP協(xié)議交換數(shù)據(jù)以及控制信息,向用戶呈現(xiàn)實時的多媒體播放信息,用戶可以進(jìn)行檢索播放;當(dāng)用戶選中某一多媒體文件播放時,客戶機上的Web瀏覽器啟動流媒體客戶端程序,使用HTTP鏈接從Web服務(wù)器獲取多媒體文件的相關(guān)參數(shù),并對客戶端程序初始化。這些參數(shù)包括資源的位置信息、多媒體數(shù)據(jù)的編碼類型以及流媒體服務(wù)器的相關(guān)參數(shù)。
圖1 流媒體工作原理圖Fig.1 The working principle diagram of streaming media
流媒體播放系統(tǒng)分為服務(wù)器和嵌入式終端兩部分,由于流媒體服務(wù)器可以使用常見的服務(wù)器搭載流行的流媒體服務(wù)軟件實現(xiàn),此處不再敘述。這里重點說明嵌入式終端的設(shè)計。硬件上,采用了ARM處理器進(jìn)行核心控制,編解碼芯片DM64X進(jìn)行音視頻的硬解碼;嵌入式操作系統(tǒng)上,采用了穩(wěn)定高效的Linux內(nèi)核;應(yīng)用軟件上,采用了模塊化的構(gòu)建方法。
系統(tǒng)的硬件結(jié)構(gòu)示意圖如圖2所示。
圖2 嵌入式終端硬件結(jié)構(gòu)圖Fig.2 Hardware structure of the embedded terminal
主控制器采用了三星公司的一款S3C2440微處理器,基于ARM920T內(nèi)核,采用0.18 μm工藝制作CMOS宏單元和存儲單元,同時采用 Advanced Microcontroller Bus Architecture(AMBA)新型總線結(jié)構(gòu),具有低功耗、精簡和出色的全靜態(tài)設(shè)計,所以特別適合于對成本和功耗敏感的應(yīng)用。除此之外,他特別為各種外設(shè)準(zhǔn)備了豐富的中斷控制能力,包括高達(dá)60個中斷源(其中,5個定時器,9個 UARTs,24個外部中斷,1個看門狗定時器,4個 DMA,2個 ADC,1個LCD,1 個電池故障,1 個 IIC,2 個 SPI,1 個 SDI,2 個 USB,1個NAND,2個Camera和1個AC97音頻),可以使用電平/邊沿觸發(fā)模式進(jìn)行觸發(fā)的外部中斷源,可編程決定的邊沿/電平觸發(fā)極性,這些功能為緊急中斷請求提供了快速中斷(FIQ)服務(wù)[5]。
編解碼芯片DM64X是美國德洲儀器(TI)公司生產(chǎn)的。TI公司是DSP芯片的行業(yè)龍頭企業(yè),這些年來它的眾多產(chǎn)品多一直統(tǒng)治著這個行業(yè),已經(jīng)深入應(yīng)用到了電子信息行業(yè)各個領(lǐng)域中。2003年TI發(fā)布了TMS320DM64X系列的視頻DSP產(chǎn)品,2004年下半年批量供貨,產(chǎn)品一經(jīng)面世得到了數(shù)字視頻行業(yè)的強烈關(guān)注。該芯片每個Video單元又分成A、B兩個口,A/B口可以分別處理一路視頻采集,因此DM642最多可以處理6路視頻采集數(shù)據(jù)(不帶音頻)。如果將Video單元配置成Video out方式,則只能在A口輸出,B口不可以,因此DM642最多可支持3路視頻輸出(不帶音頻)。如果同時處理音頻,每一個視頻單元可以處理兩路立體聲。DM642芯片功耗1.5 W,支持SDRAM最大為32 MB,同時也具有網(wǎng)絡(luò)接口。
現(xiàn)在,移植Linux內(nèi)核一般先要在內(nèi)核的目錄中選擇一個與目標(biāo)板硬件配置最接近的并且已經(jīng)移植成功的目標(biāo)目錄作為模板[6]。之后可以針對硬件具體的差別進(jìn)行相應(yīng)的修改或?qū)?yīng)打現(xiàn)成的移植補丁。這里,使用了Linux-2.6.33內(nèi)核進(jìn)行移植,并且根據(jù)本硬件系統(tǒng)的配置選擇了SMDK2440樣板作為移植的目標(biāo)模板。在編譯和配置內(nèi)核前可以使用現(xiàn)有的patch包對Linux-2.6.33內(nèi)核打補丁,并使用menuconfig工具對內(nèi)核進(jìn)行適當(dāng)?shù)募舨?。?nèi)核的裁減工作與在PC上對Linux內(nèi)核的裁減工作類似,主要的工作是增添對自己需要的模塊的支持,并且除去無用的模塊,以使Linux內(nèi)核更加適合于目標(biāo)硬件系統(tǒng)。內(nèi)核的編譯可以通過修改根目錄以及其他子目錄下的Makefile直接完成,也可以通過在預(yù)編譯的時候設(shè)置編譯參數(shù)值時進(jìn)行選定。編譯前使用make menuconfig命令,開發(fā)者可以非常方便地增添和刪除內(nèi)核模塊。
之后,使用make工具生成uImage鏡像文件。uImage鏡像文件可以使用U-Boot引導(dǎo)程序進(jìn)行引導(dǎo),裝入內(nèi)存。
Linux內(nèi)核移植的整個過程如圖3所示。
圖3 內(nèi)核移植流程Fig.3 Linux kernel porting flow
整個流媒體播放器的軟件架構(gòu)如圖4所示,共分為4個大的模塊:
1)GUI模塊 采用Qt庫實現(xiàn),完全的面向?qū)ο笤O(shè)計,界面易擴展,各種功能使用插件的形式完成;主要負(fù)責(zé)界面各種按鈕的消息捕獲、處理,完成播放器所有功能窗口的創(chuàng)建、銷毀以及管理,當(dāng)出現(xiàn)軟件有錯誤發(fā)生時,向用戶返回的友好錯誤提示。同時,播放在線流媒體的時候,可以顯示當(dāng)前播放媒體的狀態(tài)信息。
2)Media Adapter Layer,媒體適配層 主要負(fù)責(zé)向GUI模塊提供底層無關(guān)的流媒體播放API接口,與GUI交換媒體數(shù)據(jù),以及響應(yīng)用戶在GUI上的操作,控制下層模塊進(jìn)行實際的執(zhí)行。
圖4 流媒體播放軟件架構(gòu)圖Fig.4 Architecture of streaming media software
3)Source Control模塊 主要負(fù)責(zé)通過 HTTP協(xié)議與Web服務(wù)器進(jìn)行交互,接收相關(guān)媒體信息;通過RTSP協(xié)議與流媒體服務(wù)器交互,得到流媒體數(shù)據(jù)與控制信息;之后,根據(jù)嵌入式設(shè)備本身的特點進(jìn)行預(yù)處理。
4)Core Module 主要負(fù)責(zé)音視頻的分離,以及調(diào)用編解碼芯片進(jìn)行音視頻的編解碼,并實現(xiàn)音頻、視頻的同步輸出。
隨著互聯(lián)網(wǎng)技術(shù)的突飛猛進(jìn),寬帶互聯(lián)網(wǎng)幾乎覆蓋了我國所有城市,人們對在線視頻播放的興趣也越來越大?!皁nline anytime,surfing anywhere”,3G 時代的來 臨使這一切成為了可能,也標(biāo)志著未來互聯(lián)網(wǎng)的發(fā)展方向。作為3G應(yīng)用中的熱門,嵌入式流媒體技術(shù)將會被廣泛研究和推廣,成為用戶體驗3G網(wǎng)絡(luò)的流行手段。
[1]岑斌,肖剛,程振波,等.流媒體技術(shù)綜述[J].中國有線電視,2003(22):29-31.
CEN Bin, XIAO Gang, CHENG Zhen-bo,et al.Synthetical study of streaming media[J].China Cable TV, 2003 (22):29-31.
[2]潘瑜青,張健,郭培源.流媒體中的Qos控制[J].微計算機信息,2008,24(1):256-257.
PAN Yu-qing, ZHANG Jian, GUO Pei-yuan.Qos control in streaming media[J].Micro Computer Information,2008,24(1):256-257.
[3]尹遜鈺,王偉.流媒體技術(shù)的發(fā)展與應(yīng)用[J].廣播電視信息,2001(10):40-42.
YIN Xun-yu,WANG Wei.Development and application of streaming media technology [J].Radio and Television Information,2001(10):40-42.
[4]金海,邵艷明,韓宗芬.基于實時流動成的流媒體客戶端[J].計算機工程,2004(6):192-194.
JIN Hai, SHAO Yan-ming, HAN Zong-fen.Streaming media client based on real time streaming protocols[J].Computer Engineering, 2004(6):192-194.
[5]涂剛,陽富民,胡貫榮.嵌入式操作系統(tǒng)綜述[J].計算機應(yīng)用研究,2000,17(11):4-6.
TU Gang, YANG Fu-min,HU Guan-rong.Overview of embedded operating systems [J].Computer Application Research,2000,17(11):4-6.
[6]龍盈盈,孟利民.構(gòu)建嵌入式linux交叉編譯環(huán)境[J].計算機與數(shù)字工程,2006,34(6):30-33
LONG Ying-ying,MENG Li-min.Constructing embedded Linux cross-compiling environment[J].Computer and Digital Engineering,2006,34(6):30-33.