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