顧艷華+王闖
【摘 要】樹莓派卡片電腦是研究物聯(lián)網(wǎng),智能機(jī)器人等領(lǐng)域的天然開發(fā)板,基于樹莓派的高清視頻播放終器的設(shè)計(jì)與實(shí)現(xiàn)具有很強(qiáng)的實(shí)踐參考價(jià)值。介紹了樹莓派的軟硬件研發(fā)環(huán)境及其發(fā)展,給出了基于樹莓派設(shè)計(jì)實(shí)現(xiàn)高清視頻播放器的軟硬件設(shè)計(jì)及移植開發(fā)環(huán)境,并基于樹莓派移植了高清視頻解碼模塊,實(shí)現(xiàn)了基于樹莓派的高清(720P及1080P)視頻的播放系統(tǒng)。經(jīng)測(cè)試,該系統(tǒng)性能卓越,實(shí)用創(chuàng)新性強(qiáng)。
【關(guān)鍵詞】樹莓派;高清視頻;視頻播放器;物聯(lián)網(wǎng);H264;AAC
0 引言
體積如名片大小的樹莓派是基于ARM控制器和Linux系統(tǒng)的單板機(jī)電腦,它具有計(jì)算機(jī)主機(jī)的所有功能和接口,如USB,RJ45, SD-IO,HDMI及GPIO接口等,廣泛支持基于Linux 的發(fā)行版和Windows 10的操作系統(tǒng)[1]。樹莓派體積小巧,具有可擴(kuò)展性強(qiáng),社區(qū)廣泛等優(yōu)勢(shì),它是研究物聯(lián)網(wǎng),智能機(jī)器人等領(lǐng)域的良好的、天然的原型開發(fā)平臺(tái)。樹莓派自2012年首版在英國發(fā)布至今,深受全球計(jì)算機(jī)愛好者的熱烈研究,來自全球的計(jì)算機(jī)軟硬件愛好者們基于樹莓派開發(fā)了眾多的創(chuàng)新功能,如機(jī)器人飛行器,家庭自動(dòng)化,天氣預(yù)報(bào)站,超級(jí)電腦,有聲書籍播放器等等[2]。
隨著高清視頻資源的日益豐富和用戶對(duì)高清視頻播放需求的越來越多,高清視頻終端播放器的設(shè)計(jì)和開發(fā)面臨著越來越多的需求和挑戰(zhàn), 如:更小巧便攜、更強(qiáng)的處理能力等。本文基于B型樹莓派,搭建了基于其上的軟件移植開發(fā)環(huán)境,利用其強(qiáng)大的GPU視頻處理能力,開發(fā)移植了H264高清視頻解碼模塊,成功實(shí)現(xiàn)了基于其上的720P和1080P高清視頻播放器。
本文共分為三個(gè)部分:第一部分高清播放器系統(tǒng)分析與設(shè)計(jì),介紹了樹莓派的軟硬件開發(fā)環(huán)境及其演進(jìn),及基于樹莓派的高清視頻播放器系統(tǒng)架構(gòu)及設(shè)計(jì);第二部分詳敘了本系統(tǒng)高清音視頻解碼模塊在樹莓派環(huán)境中的移植;最后總結(jié)了本系統(tǒng)的性能測(cè)試數(shù)據(jù)。
1 高清播放器系統(tǒng)設(shè)計(jì)
1.1 樹莓派硬件開發(fā)環(huán)境及演進(jìn)
2012年英國樹莓派基金會(huì)宣布樹莓派平板電腦正式發(fā)布,第一代樹莓派分為A型和B型兩款,二者硬件配置略有不同,主要體現(xiàn)在B型有512MB內(nèi)存而A型有512MB內(nèi)存。2015年2月,樹莓派基金會(huì)宣布推出二代樹莓派卡片電腦B型,在硬件配置上又進(jìn)一步升級(jí),比如CPU由700MHz的單核心升級(jí)到900MHz的四核心,內(nèi)存由512MB升級(jí)到1GB以及支持更多的外設(shè)擴(kuò)展接口等。
1.2 樹莓派軟件開發(fā)環(huán)境及演進(jìn)
第一代樹莓派基于Linux系統(tǒng),典型的如Raspbian,ARCH Linux ARM等。隨著樹莓派社區(qū)的壯大, 樹莓派已被越來越多的操作系統(tǒng)支持。據(jù)2015年2月報(bào)告顯示,Windows 10 和 Android平臺(tái)已證實(shí)支持樹莓派,其它典型的如FreeBSD,WebOS,Debian Linux等操作系統(tǒng)均已支持樹莓派。完整的支持樹莓派的操作系統(tǒng)列表參見[3]。
樹莓派基于ARM系列CPU系統(tǒng),應(yīng)用軟件可移植環(huán)境強(qiáng),GNU/Linux工具鏈已經(jīng)較好的支持樹莓派系統(tǒng)軟件開發(fā)移植。成熟的支持樹莓派開發(fā)的編程語言有:C及C++,Python,Java,Golang等語言。典型的集成開發(fā)環(huán)境有KDevelop, Bluej IDE, Eclipse及Visual Studio等。
基于樹莓派的高清視頻播放器軟件開發(fā)環(huán)境如下:
1)操作系統(tǒng): Raspbian OS
2)編譯及調(diào)試器: GCC, G++及GDB
3)集成開發(fā)環(huán)境: Eclipse IDE for C/C++
1.3 樹莓派高清視頻播放器系統(tǒng)設(shè)計(jì)
基于樹莓派的高清視頻播放器系統(tǒng)主要設(shè)計(jì)為三個(gè)模塊: 高清音視頻數(shù)據(jù)輸入模塊, 音視頻數(shù)據(jù)解碼模塊及音視頻輸出渲染模塊。系統(tǒng)架構(gòu)邏輯模塊設(shè)計(jì)如圖1所示。
音視頻數(shù)據(jù)輸入模塊(I)-典型的音視頻數(shù)據(jù)支持H264編碼視頻數(shù)據(jù)及FAAC編碼音頻數(shù)據(jù), 數(shù)據(jù)封裝格式支持mp4及MPEG Transport Stream (TS)格式[4];數(shù)據(jù)源讀取可支持本地MP4封裝格式,及支持從網(wǎng)絡(luò)端讀取TS封裝格式;輸入模塊(I)與OMXPlayer播放器模塊(P)間采用生產(chǎn)者-消費(fèi)者模型,設(shè)計(jì)并發(fā)隊(duì)列Queue(Q)作為二者之間數(shù)據(jù)通信模型;視頻解碼模塊(V)與音頻解碼模塊(A)為消費(fèi)者。功能上數(shù)據(jù)輸入模塊解封裝音視頻數(shù)據(jù)包,并標(biāo)記時(shí)間戳T,后分別放入并發(fā)隊(duì)列Q。
OMXPlayer播放器模塊(P)-基于開源OMXPlayer模型移植,分別采用基于FFmpeg向樹莓派移植的高清視頻解碼模塊(V)和基于FAAC向樹莓派移植的音頻解碼模塊(A)。功能上播放器模塊讀取并發(fā)隊(duì)列音視頻數(shù)據(jù),分別解碼后輸出給音視頻輸出模塊(O)。
音視頻輸出模塊(O)-基于輸入模塊標(biāo)記時(shí)間戳T,向HDMI接口寫輸出音視頻數(shù)據(jù)。
關(guān)鍵技術(shù)音視頻同步算法-基于以上模塊設(shè)計(jì),以下算法被設(shè)計(jì)為解決數(shù)據(jù)輸出時(shí)音視頻同步問題,經(jīng)過此算法處理的音視頻數(shù)據(jù)為時(shí)間同步數(shù)據(jù),作為音視頻解碼模塊和輸出模塊的輸入實(shí)現(xiàn)音視頻同步。
音視頻同步算法:
Step 1:(I)模塊讀取ts時(shí)長(zhǎng)TS或MP4封裝數(shù)據(jù),去除頭部封裝信息并獲取視頻幀率F
Step 2:獲取當(dāng)期系統(tǒng)時(shí)間T
線程1: 處理音頻數(shù)據(jù)
Step 3:將當(dāng)前ts時(shí)長(zhǎng)音頻數(shù)據(jù)標(biāo)簽為時(shí)間T,并將數(shù)據(jù)放入Q
線程2: 處理視頻數(shù)據(jù)
Step 4: 記錄當(dāng)前系統(tǒng)時(shí)間t1
Step 5: 讀取ts/F時(shí)長(zhǎng)視頻幀,標(biāo)簽為時(shí)間T,并將數(shù)據(jù)放入Q
Step 6:記錄當(dāng)前系統(tǒng)時(shí)間t2 及 時(shí)間消耗 SumT= t2-t1
Step 7:IF SumT>=ts轉(zhuǎn)到Step1
否則轉(zhuǎn)到Step4
2 高清音視頻解碼模塊移植
基于開源OMXPlayer播放器模型,基于樹莓派的高清視頻播放器移植了音、視頻解碼模塊到樹莓派系統(tǒng)中,此移植關(guān)鍵在于充分利用樹莓派GPU多媒體處理指令及技術(shù)。
2.1 H.264視頻解碼模塊移植
H.264/MPEG-4 AVC[5]是一種面向塊的基于運(yùn)動(dòng)補(bǔ)償?shù)木幗獯a器標(biāo)準(zhǔn)。由ITU-T視頻編碼專家組與ISO/IEC聯(lián)合工作組開發(fā),它也被廣泛用于網(wǎng)絡(luò)流媒體數(shù)據(jù),網(wǎng)絡(luò)軟件以及各種高清晰度電視陸地廣播系統(tǒng)中。
高清視頻解碼模塊基于開源標(biāo)準(zhǔn)庫FFmpeg及X264庫移植,面向樹莓派的移植主要解決了FFmpeg及X264程序庫在樹莓派ARM平臺(tái)的編譯鏈接問題, 其關(guān)鍵語法如下:
2.2 ACC音頻解碼模塊移植
高級(jí)音頻編碼AAC(Advanced Audio Coding)基于MPEG-2的音頻編碼技術(shù)是一種取代MP3的高壓縮比的音頻壓縮算法。AAC壓縮比通常為18:1,遠(yuǎn)勝mp3;在音質(zhì)方面,由于采用多聲道,更高的采樣率和采樣精度,以及使用低復(fù)雜性的描述方式,使其比幾乎所有的傳統(tǒng)編碼方式在同規(guī)格的情況下更勝一籌。
AAC音頻解碼模塊基于FAAC開源音頻解碼標(biāo)準(zhǔn)庫向樹莓派移植。移植過程分為兩步,第一步需先交叉編譯FAAC庫;第二部需再次交叉編譯FFmpeg,同時(shí)激活X264及FAAC模塊。其關(guān)鍵語法如下:
3 總結(jié)
3.1 系統(tǒng)測(cè)試性能參數(shù)
將B型樹莓派,連接顯示器、鍵盤,鼠標(biāo),移動(dòng)硬盤等外部設(shè)備,然后在樹莓派上運(yùn)行編譯后的高清視頻播放器OMXPlayer,設(shè)計(jì)實(shí)現(xiàn)的高清視頻播放器用戶接口如下:
經(jīng)測(cè)試,基于樹莓派的高清視頻播放器,性能良好,具有以下測(cè)試參數(shù)。
3.2 結(jié)束語
本文設(shè)計(jì)并實(shí)現(xiàn)了基于樹莓派實(shí)現(xiàn)的高清視頻播放器,該原型系統(tǒng)經(jīng)測(cè)試,性能卓越,體積小,可攜帶性強(qiáng)。本系統(tǒng)中運(yùn)用的設(shè)計(jì)方案和基于樹莓派的軟硬件開發(fā)經(jīng)驗(yàn)為進(jìn)一步研究基于樹莓派的其他應(yīng)用具有一定的實(shí)踐參考意義。
【參考文獻(xiàn)】
[1]李明,譯.Linux+樹莓派玩轉(zhuǎn)智能家居(第2版)[M].北京:人民郵電出版社,2014,6.
[2]Peter Membrey David Hows.樹莓派學(xué)習(xí)指南-(基于Linux)[M].北京:人民郵電出版社,2014,4.
[3]Brendan Horan. RaspberryPi樹莓派實(shí)作應(yīng)用[M].北京:人民郵電出版社,2014,5.
[4]董杰,辛吉濤,連捷.基于Android系統(tǒng)的H.264視頻直播技術(shù)研究.電視技術(shù),2015(2).
[5]蔡麗艷.基于H.264嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[M].南京郵電大學(xué),2013.
[責(zé)任編輯:鄧麗麗]