鄒振華+田敏+索世昌+藍(lán)世強(qiáng)+趙雷+李磊
摘 要: 該系統(tǒng)是以L(fǎng)inux作為操作系統(tǒng),并以S3C6410微處理器為硬件平臺(tái)的嵌入式應(yīng)用系統(tǒng)。系統(tǒng)采用CMOS攝像頭獲取圖像,通過(guò)WiFi無(wú)線(xiàn)傳輸;利用S3C6410獨(dú)特的MFC功能,實(shí)現(xiàn)H.264高速、高效率硬件壓縮和解壓;通信雙機(jī)采用多線(xiàn)程方式實(shí)現(xiàn)了音視頻實(shí)時(shí)傳輸;可在4.3寸的彩色液晶屏上顯示本機(jī)及遠(yuǎn)端機(jī)清晰的圖像;音頻與視頻可全雙工同步傳輸。該系統(tǒng)功能實(shí)用、操作簡(jiǎn)潔,能夠廣泛應(yīng)用于小型音視頻服務(wù)或網(wǎng)絡(luò)音視頻電子產(chǎn)品,可替代傳統(tǒng)對(duì)講系統(tǒng)。
關(guān)鍵詞: Linux; S3C6410; 嵌入式應(yīng)用系統(tǒng); WiFi; 音視頻; 全雙工
中圖分類(lèi)號(hào): TN911.73?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)07?0018?03
Wireless audio and video intercom system based on ARM?Linux
ZOU Zhen?hua, TIAN Min, SUO Shi?chang, LAN Shi?qiang, ZHAO Lei, LI Lei
(College of Communication and Information Engineering, Xi′an University of Science and Technology, Xian 710600, China)
Abstract: The system takes Linux as the operating system, and uses S3C6410 microprocessor as the hardware platform of embedded application system. The images are obtained by CMOS camera and transmitted through WiFi. H.264 high speed, high efficiency hardware compression and decompression are realized with MFC function of S3C6410. The audio and video real?time transmission of two computers communication is realized through multithreading, thus the clear image of the machine and the remote machine can be displayed on the 4.3?inch color LCD screen, and the audio and video can be transmitted in full?duplex synchronous. Function of the system which can replace traditional intercom is practical, operational, and it can be widely used in small audio and video service or network audio and video electronic products.
Keywords: Linux; S3C6410; embedded application system; WiFi; audio and video; full duplex
0 引 言
隨著數(shù)字化和網(wǎng)絡(luò)化時(shí)代的到來(lái),尤其是寬帶無(wú)線(xiàn)網(wǎng)絡(luò)的發(fā)展,為音視頻這樣大數(shù)據(jù)量傳輸業(yè)務(wù)在無(wú)線(xiàn)網(wǎng)絡(luò)上的應(yīng)用提供了契機(jī)。同時(shí)由于音視頻獨(dú)特的感官特性,使其相關(guān)的應(yīng)用需求也變得越來(lái)越迫切。無(wú)線(xiàn)多媒體是多媒體和移動(dòng)通信這兩個(gè)領(lǐng)域的技術(shù)相互融合的產(chǎn)物,成為當(dāng)今通信領(lǐng)域的一個(gè)熱點(diǎn)。鑒于Linux內(nèi)核的開(kāi)源性,采用其作為操作系統(tǒng),從而使整個(gè)系統(tǒng)具有更好的實(shí)時(shí)性和穩(wěn)定性。整個(gè)系統(tǒng)以ARM11為核心處理器、采用新一代視頻編解碼標(biāo)準(zhǔn)H.264[1]進(jìn)行編譯碼,并通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)傳輸音視頻。它充分利用S3C6410微處理器內(nèi)部集成的多媒體編解碼器(Multi?Format video Codec,MFC),有效提高了系統(tǒng)的性?xún)r(jià)比。整個(gè)系統(tǒng)為無(wú)線(xiàn)多媒體音視頻的傳輸提供了一個(gè)好的解決方案,可廣泛應(yīng)用在遠(yuǎn)程監(jiān)控、視頻電話(huà)等各種領(lǐng)域,具有較好的實(shí)用價(jià)值和推廣應(yīng)用前景。
1 系統(tǒng)總體方案設(shè)計(jì)
通信雙方系統(tǒng)中音頻和視頻采集模塊負(fù)責(zé)采集模擬信號(hào),并將采集到的音視頻數(shù)據(jù)送到音視頻管理模塊,經(jīng)過(guò)壓縮處理,再加上數(shù)據(jù)包頭一起由WiFi發(fā)送到對(duì)方;對(duì)方接收到數(shù)據(jù)后,經(jīng)過(guò)相關(guān)處理,判斷音視頻幀類(lèi)型,再送往解壓縮處理模塊,恢復(fù)出音視頻數(shù)據(jù)。通信雙方設(shè)備均包含嵌入式音視頻管理模塊和無(wú)線(xiàn)收發(fā)模塊。無(wú)線(xiàn)WiFi收發(fā)模塊運(yùn)行在2.4 GHz頻段,符合IEEE 802.11b無(wú)線(xiàn)局域網(wǎng)協(xié)議標(biāo)準(zhǔn)。
2 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件設(shè)計(jì)以ARM11為核心微處理器,主頻為532 MHz,能夠滿(mǎn)足實(shí)時(shí)處理的要求,其內(nèi)部集成有256 MB SDRAM、2 GB FLASH、音頻錄、放音接口、Camera視頻接口、無(wú)線(xiàn)WiFi接口、LCD接口、SD卡接口等,同時(shí)以開(kāi)源的Linux 2.6.28為內(nèi)核,yaffs2為根文件系統(tǒng),Qtopia 4.4.3作為用戶(hù)界面,為開(kāi)發(fā)調(diào)試和系統(tǒng)設(shè)計(jì)提供了良好的平臺(tái)。
2.1 音視頻采集模塊
音頻采用處理器內(nèi)部集成的IIS(Inter?IC Sound Bus)音頻接口和WM9714音頻芯片。IIS是飛利浦公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而定制的一種總線(xiàn)標(biāo)準(zhǔn)。在飛利浦公司的IIS標(biāo)準(zhǔn)中,既規(guī)定了硬件接口系統(tǒng),也規(guī)范了音頻數(shù)據(jù)的格式?;诖擞布敖涌谝?guī)范,實(shí)現(xiàn)了集成音頻輸出、Linein輸入和Mic輸入功能。
視頻采集使用的是OV9650CMOS攝像頭模塊,分辨率高達(dá)130萬(wàn)像素,可直接與OK6410開(kāi)發(fā)板的Camera接口相接。適用于高端消費(fèi)類(lèi)電子產(chǎn)品、工業(yè)控制、車(chē)載導(dǎo)航、多媒體終端、行業(yè)PDA、嵌入式教育培訓(xùn)、個(gè)人學(xué)習(xí)等。其結(jié)構(gòu)較簡(jiǎn)單,提供硬件驅(qū)動(dòng)程序,便于使用和調(diào)試。
2.2 無(wú)線(xiàn)傳輸模塊
本系統(tǒng)的無(wú)線(xiàn)傳輸模塊采用工作在2.4 GHz公共頻段的WiFi模塊來(lái)實(shí)現(xiàn),它遵循IEEE 802.11b/g網(wǎng)絡(luò)標(biāo)準(zhǔn),可用于在后期開(kāi)發(fā)中將終端接入Internet,其最高數(shù)據(jù)率為54 Mb/s,支持WinCE、Linux系統(tǒng)。室內(nèi)通信距離可達(dá)100 m,室外開(kāi)闊地可達(dá)300 m。只需要對(duì)ARM?Linux操作系統(tǒng)進(jìn)行簡(jiǎn)單的配置就可以由以太網(wǎng)連接模式轉(zhuǎn)化為雙機(jī)通信AD?HOC模式,在系統(tǒng)啟動(dòng)之后,設(shè)計(jì)了基于Qt[2]的窗口設(shè)計(jì),方便切換連接模式。
選用WiFi具有很好的可擴(kuò)展性,可以通過(guò)無(wú)線(xiàn)路由器的WiFi連接到廣域網(wǎng),具有很好的應(yīng)用前景。同時(shí)大多數(shù)手機(jī)等終端設(shè)備具有WiFi功能,后期還可以將軟件升級(jí)至Andriod系統(tǒng),方便開(kāi)發(fā)和移植。它減少了音視頻實(shí)時(shí)傳輸?shù)拈_(kāi)發(fā)成本和周期,也給現(xiàn)代移動(dòng)通信提供了一種新的音視頻通信方式。
WiFi的驅(qū)動(dòng)配置好后,應(yīng)用層和以太網(wǎng)接口模式編程完全相同。由于此設(shè)計(jì)音視頻數(shù)據(jù)量較大,不宜采用UDP,因?yàn)楫?dāng)數(shù)據(jù)量過(guò)大或傳輸信號(hào)不好時(shí),UDP會(huì)嚴(yán)重丟包,所以最終選擇面向連接的TCP傳輸協(xié)議,保證了系統(tǒng)音視頻有效傳輸。由于TCP是應(yīng)答時(shí)式傳輸數(shù)據(jù),在局域網(wǎng)內(nèi),無(wú)需考慮TCP丟包問(wèn)題,為實(shí)現(xiàn)系統(tǒng)功能提供了可靠的保障。
3 軟件設(shè)計(jì)
軟件分為用戶(hù)界面設(shè)計(jì)和數(shù)據(jù)處理、傳輸?shù)饶K的設(shè)計(jì)。
3.1 基于多線(xiàn)程的軟件總體設(shè)計(jì)
系統(tǒng)軟件架構(gòu)如圖1所示,它是音視頻單向采集、壓縮、傳輸、接收、解壓縮、處理回放音視頻流控制過(guò)程,各個(gè)模塊采用線(xiàn)程處理,由信號(hào)量處理線(xiàn)程間優(yōu)先級(jí)構(gòu)成循環(huán)的線(xiàn)程,有效地處理了音視頻數(shù)據(jù)流。系統(tǒng)各功能模塊化,便于修改和移植,代碼簡(jiǎn)短精悍。
圖1 軟件架構(gòu)
3.2 回音消除
系統(tǒng)開(kāi)始時(shí)出現(xiàn)回音和延時(shí)問(wèn)題,延時(shí)是由于采集傳輸過(guò)程中造成的,所以只能盡量縮短延時(shí),而無(wú)法做到即時(shí)播放,這也是此系統(tǒng)的缺陷之一?;匾羰怯捎谘訒r(shí)造成的,文中最后采用開(kāi)源的Speex算法消除了回音。具體做法:將該算法編譯成庫(kù)文件,加入到Linux內(nèi)核,即可以使用Speex 的API函數(shù),實(shí)現(xiàn)音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據(jù)本地系統(tǒng)時(shí)鐘確定實(shí)際時(shí)間,通過(guò)調(diào)整音頻播放速度來(lái)達(dá)到音視頻同步。
首先選擇一個(gè)本地系統(tǒng)時(shí)鐘參考(LSCR),然后將LSCR發(fā)送到視頻解碼器和音頻解碼器,由這兩個(gè)解碼器根據(jù)各幀的PTS值對(duì)照本地系統(tǒng)時(shí)鐘,參考產(chǎn)生各幀準(zhǔn)確的顯示或回放的時(shí)間。也就是說(shuō),生成輸出數(shù)據(jù)流時(shí)依據(jù)本地參考時(shí)鐘上的時(shí)間給每個(gè)數(shù)據(jù)塊都打上時(shí)間戳(一般包括開(kāi)始時(shí)間和結(jié)束時(shí)間)。在播放時(shí),讀取數(shù)據(jù)塊上的時(shí)間戳,同時(shí)根據(jù)本地系統(tǒng)時(shí)鐘參考上的時(shí)間來(lái)安排播放。
整個(gè)系統(tǒng)的音視頻同步數(shù)據(jù)流程如圖2所示。
圖2 音視頻同步數(shù)據(jù)流程
4 音視頻通道管理
為了節(jié)約內(nèi)存資源,便于通道的管理,本設(shè)計(jì)采用分通道的線(xiàn)程池管理,音、視頻分別由自己的通道完成任務(wù)。
音視頻采集使用同一個(gè)線(xiàn)程處理,采用select系統(tǒng)調(diào)用,每執(zhí)行到此線(xiàn)程,就判斷音視頻設(shè)備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區(qū),再交給音視頻采集壓縮線(xiàn)程,最后再交給發(fā)送線(xiàn)程打包后采用TCP發(fā)送。需要說(shuō)明的是本設(shè)計(jì)線(xiàn)程之間均采用信號(hào)量完成線(xiàn)程間基于TCP的音視頻軟件架構(gòu)的同步管理。發(fā)送完以后進(jìn)入接收線(xiàn)程等待對(duì)方發(fā)音視頻數(shù)據(jù)。在接受端由接收線(xiàn)程接收到數(shù)據(jù)以后,判斷數(shù)據(jù)的包頭,再交由解壓縮處理線(xiàn)程處理,然后播放音視頻,再等待對(duì)方發(fā)數(shù)據(jù)到本機(jī)。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個(gè)系統(tǒng)實(shí)時(shí)性基本達(dá)到要求。嵌入式音視頻管理模塊實(shí)現(xiàn)了整個(gè)系統(tǒng)的統(tǒng)籌控制和實(shí)時(shí)處理,為音視頻數(shù)據(jù)管理提供可靠的保證。
5 結(jié) 語(yǔ)
目前基于嵌入式無(wú)線(xiàn)終端的視頻監(jiān)控產(chǎn)品由于無(wú)需布線(xiàn)、傳輸距離遠(yuǎn)、環(huán)境適應(yīng)能力強(qiáng),性能穩(wěn)定及通信便利等優(yōu)勢(shì)而倍受青睞,在安全監(jiān)察、巡查通信、施工聯(lián)絡(luò)、人員調(diào)配等場(chǎng)合發(fā)揮著不可替代的作用。本系統(tǒng)是基于嵌入式Linux的無(wú)線(xiàn)音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經(jīng)過(guò)開(kāi)關(guān)電源芯片降壓的方式給整個(gè)系統(tǒng)供電,其效率較傳統(tǒng)直流穩(wěn)壓大大提高。在戶(hù)外可視化娛樂(lè)、施工現(xiàn)場(chǎng)監(jiān)控、大型安保聯(lián)絡(luò)等場(chǎng)合均可使用,具有廣泛的應(yīng)用前景。
注:本文指導(dǎo)老師為吳延海。
參考文獻(xiàn)
[1] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC[M].北京:人民郵電出版社,2009.
[2] 陳爽.Linux與Qt程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.
[3] 馮國(guó)進(jìn).Linux驅(qū)動(dòng)程序開(kāi)發(fā)實(shí)例[M].北京:機(jī)械工業(yè)出版社,2011.
[4] 孫瓊.嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2006.
[5] 馮進(jìn)國(guó).嵌入式Linux驅(qū)動(dòng)程序設(shè)計(jì)從入門(mén)到精通[M].北京:清華大學(xué)出版社,2008.
[6] LOVE Robert.Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2011.
[7] 孫更新.Linux內(nèi)核注釋[M].北京:中國(guó)鐵道出版社,2011.
[8] 劉學(xué)勇.Linux C編程從入門(mén)到精通[M].北京:電子工業(yè)出版社,2012.
[9] 寧方明.Linux系統(tǒng)管理[M].北京:人民郵電出版社,2012.
[10] 熊茂華.嵌入式Linux實(shí)時(shí)操作系統(tǒng)及應(yīng)用編程[M].北京:清華大學(xué)出版社,2011.
視頻采集使用的是OV9650CMOS攝像頭模塊,分辨率高達(dá)130萬(wàn)像素,可直接與OK6410開(kāi)發(fā)板的Camera接口相接。適用于高端消費(fèi)類(lèi)電子產(chǎn)品、工業(yè)控制、車(chē)載導(dǎo)航、多媒體終端、行業(yè)PDA、嵌入式教育培訓(xùn)、個(gè)人學(xué)習(xí)等。其結(jié)構(gòu)較簡(jiǎn)單,提供硬件驅(qū)動(dòng)程序,便于使用和調(diào)試。
2.2 無(wú)線(xiàn)傳輸模塊
本系統(tǒng)的無(wú)線(xiàn)傳輸模塊采用工作在2.4 GHz公共頻段的WiFi模塊來(lái)實(shí)現(xiàn),它遵循IEEE 802.11b/g網(wǎng)絡(luò)標(biāo)準(zhǔn),可用于在后期開(kāi)發(fā)中將終端接入Internet,其最高數(shù)據(jù)率為54 Mb/s,支持WinCE、Linux系統(tǒng)。室內(nèi)通信距離可達(dá)100 m,室外開(kāi)闊地可達(dá)300 m。只需要對(duì)ARM?Linux操作系統(tǒng)進(jìn)行簡(jiǎn)單的配置就可以由以太網(wǎng)連接模式轉(zhuǎn)化為雙機(jī)通信AD?HOC模式,在系統(tǒng)啟動(dòng)之后,設(shè)計(jì)了基于Qt[2]的窗口設(shè)計(jì),方便切換連接模式。
選用WiFi具有很好的可擴(kuò)展性,可以通過(guò)無(wú)線(xiàn)路由器的WiFi連接到廣域網(wǎng),具有很好的應(yīng)用前景。同時(shí)大多數(shù)手機(jī)等終端設(shè)備具有WiFi功能,后期還可以將軟件升級(jí)至Andriod系統(tǒng),方便開(kāi)發(fā)和移植。它減少了音視頻實(shí)時(shí)傳輸?shù)拈_(kāi)發(fā)成本和周期,也給現(xiàn)代移動(dòng)通信提供了一種新的音視頻通信方式。
WiFi的驅(qū)動(dòng)配置好后,應(yīng)用層和以太網(wǎng)接口模式編程完全相同。由于此設(shè)計(jì)音視頻數(shù)據(jù)量較大,不宜采用UDP,因?yàn)楫?dāng)數(shù)據(jù)量過(guò)大或傳輸信號(hào)不好時(shí),UDP會(huì)嚴(yán)重丟包,所以最終選擇面向連接的TCP傳輸協(xié)議,保證了系統(tǒng)音視頻有效傳輸。由于TCP是應(yīng)答時(shí)式傳輸數(shù)據(jù),在局域網(wǎng)內(nèi),無(wú)需考慮TCP丟包問(wèn)題,為實(shí)現(xiàn)系統(tǒng)功能提供了可靠的保障。
3 軟件設(shè)計(jì)
軟件分為用戶(hù)界面設(shè)計(jì)和數(shù)據(jù)處理、傳輸?shù)饶K的設(shè)計(jì)。
3.1 基于多線(xiàn)程的軟件總體設(shè)計(jì)
系統(tǒng)軟件架構(gòu)如圖1所示,它是音視頻單向采集、壓縮、傳輸、接收、解壓縮、處理回放音視頻流控制過(guò)程,各個(gè)模塊采用線(xiàn)程處理,由信號(hào)量處理線(xiàn)程間優(yōu)先級(jí)構(gòu)成循環(huán)的線(xiàn)程,有效地處理了音視頻數(shù)據(jù)流。系統(tǒng)各功能模塊化,便于修改和移植,代碼簡(jiǎn)短精悍。
圖1 軟件架構(gòu)
3.2 回音消除
系統(tǒng)開(kāi)始時(shí)出現(xiàn)回音和延時(shí)問(wèn)題,延時(shí)是由于采集傳輸過(guò)程中造成的,所以只能盡量縮短延時(shí),而無(wú)法做到即時(shí)播放,這也是此系統(tǒng)的缺陷之一。回音是由于延時(shí)造成的,文中最后采用開(kāi)源的Speex算法消除了回音。具體做法:將該算法編譯成庫(kù)文件,加入到Linux內(nèi)核,即可以使用Speex 的API函數(shù),實(shí)現(xiàn)音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據(jù)本地系統(tǒng)時(shí)鐘確定實(shí)際時(shí)間,通過(guò)調(diào)整音頻播放速度來(lái)達(dá)到音視頻同步。
首先選擇一個(gè)本地系統(tǒng)時(shí)鐘參考(LSCR),然后將LSCR發(fā)送到視頻解碼器和音頻解碼器,由這兩個(gè)解碼器根據(jù)各幀的PTS值對(duì)照本地系統(tǒng)時(shí)鐘,參考產(chǎn)生各幀準(zhǔn)確的顯示或回放的時(shí)間。也就是說(shuō),生成輸出數(shù)據(jù)流時(shí)依據(jù)本地參考時(shí)鐘上的時(shí)間給每個(gè)數(shù)據(jù)塊都打上時(shí)間戳(一般包括開(kāi)始時(shí)間和結(jié)束時(shí)間)。在播放時(shí),讀取數(shù)據(jù)塊上的時(shí)間戳,同時(shí)根據(jù)本地系統(tǒng)時(shí)鐘參考上的時(shí)間來(lái)安排播放。
整個(gè)系統(tǒng)的音視頻同步數(shù)據(jù)流程如圖2所示。
圖2 音視頻同步數(shù)據(jù)流程
4 音視頻通道管理
為了節(jié)約內(nèi)存資源,便于通道的管理,本設(shè)計(jì)采用分通道的線(xiàn)程池管理,音、視頻分別由自己的通道完成任務(wù)。
音視頻采集使用同一個(gè)線(xiàn)程處理,采用select系統(tǒng)調(diào)用,每執(zhí)行到此線(xiàn)程,就判斷音視頻設(shè)備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區(qū),再交給音視頻采集壓縮線(xiàn)程,最后再交給發(fā)送線(xiàn)程打包后采用TCP發(fā)送。需要說(shuō)明的是本設(shè)計(jì)線(xiàn)程之間均采用信號(hào)量完成線(xiàn)程間基于TCP的音視頻軟件架構(gòu)的同步管理。發(fā)送完以后進(jìn)入接收線(xiàn)程等待對(duì)方發(fā)音視頻數(shù)據(jù)。在接受端由接收線(xiàn)程接收到數(shù)據(jù)以后,判斷數(shù)據(jù)的包頭,再交由解壓縮處理線(xiàn)程處理,然后播放音視頻,再等待對(duì)方發(fā)數(shù)據(jù)到本機(jī)。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個(gè)系統(tǒng)實(shí)時(shí)性基本達(dá)到要求。嵌入式音視頻管理模塊實(shí)現(xiàn)了整個(gè)系統(tǒng)的統(tǒng)籌控制和實(shí)時(shí)處理,為音視頻數(shù)據(jù)管理提供可靠的保證。
5 結(jié) 語(yǔ)
目前基于嵌入式無(wú)線(xiàn)終端的視頻監(jiān)控產(chǎn)品由于無(wú)需布線(xiàn)、傳輸距離遠(yuǎn)、環(huán)境適應(yīng)能力強(qiáng),性能穩(wěn)定及通信便利等優(yōu)勢(shì)而倍受青睞,在安全監(jiān)察、巡查通信、施工聯(lián)絡(luò)、人員調(diào)配等場(chǎng)合發(fā)揮著不可替代的作用。本系統(tǒng)是基于嵌入式Linux的無(wú)線(xiàn)音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經(jīng)過(guò)開(kāi)關(guān)電源芯片降壓的方式給整個(gè)系統(tǒng)供電,其效率較傳統(tǒng)直流穩(wěn)壓大大提高。在戶(hù)外可視化娛樂(lè)、施工現(xiàn)場(chǎng)監(jiān)控、大型安保聯(lián)絡(luò)等場(chǎng)合均可使用,具有廣泛的應(yīng)用前景。
注:本文指導(dǎo)老師為吳延海。
參考文獻(xiàn)
[1] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC[M].北京:人民郵電出版社,2009.
[2] 陳爽.Linux與Qt程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.
[3] 馮國(guó)進(jìn).Linux驅(qū)動(dòng)程序開(kāi)發(fā)實(shí)例[M].北京:機(jī)械工業(yè)出版社,2011.
[4] 孫瓊.嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2006.
[5] 馮進(jìn)國(guó).嵌入式Linux驅(qū)動(dòng)程序設(shè)計(jì)從入門(mén)到精通[M].北京:清華大學(xué)出版社,2008.
[6] LOVE Robert.Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2011.
[7] 孫更新.Linux內(nèi)核注釋[M].北京:中國(guó)鐵道出版社,2011.
[8] 劉學(xué)勇.Linux C編程從入門(mén)到精通[M].北京:電子工業(yè)出版社,2012.
[9] 寧方明.Linux系統(tǒng)管理[M].北京:人民郵電出版社,2012.
[10] 熊茂華.嵌入式Linux實(shí)時(shí)操作系統(tǒng)及應(yīng)用編程[M].北京:清華大學(xué)出版社,2011.
視頻采集使用的是OV9650CMOS攝像頭模塊,分辨率高達(dá)130萬(wàn)像素,可直接與OK6410開(kāi)發(fā)板的Camera接口相接。適用于高端消費(fèi)類(lèi)電子產(chǎn)品、工業(yè)控制、車(chē)載導(dǎo)航、多媒體終端、行業(yè)PDA、嵌入式教育培訓(xùn)、個(gè)人學(xué)習(xí)等。其結(jié)構(gòu)較簡(jiǎn)單,提供硬件驅(qū)動(dòng)程序,便于使用和調(diào)試。
2.2 無(wú)線(xiàn)傳輸模塊
本系統(tǒng)的無(wú)線(xiàn)傳輸模塊采用工作在2.4 GHz公共頻段的WiFi模塊來(lái)實(shí)現(xiàn),它遵循IEEE 802.11b/g網(wǎng)絡(luò)標(biāo)準(zhǔn),可用于在后期開(kāi)發(fā)中將終端接入Internet,其最高數(shù)據(jù)率為54 Mb/s,支持WinCE、Linux系統(tǒng)。室內(nèi)通信距離可達(dá)100 m,室外開(kāi)闊地可達(dá)300 m。只需要對(duì)ARM?Linux操作系統(tǒng)進(jìn)行簡(jiǎn)單的配置就可以由以太網(wǎng)連接模式轉(zhuǎn)化為雙機(jī)通信AD?HOC模式,在系統(tǒng)啟動(dòng)之后,設(shè)計(jì)了基于Qt[2]的窗口設(shè)計(jì),方便切換連接模式。
選用WiFi具有很好的可擴(kuò)展性,可以通過(guò)無(wú)線(xiàn)路由器的WiFi連接到廣域網(wǎng),具有很好的應(yīng)用前景。同時(shí)大多數(shù)手機(jī)等終端設(shè)備具有WiFi功能,后期還可以將軟件升級(jí)至Andriod系統(tǒng),方便開(kāi)發(fā)和移植。它減少了音視頻實(shí)時(shí)傳輸?shù)拈_(kāi)發(fā)成本和周期,也給現(xiàn)代移動(dòng)通信提供了一種新的音視頻通信方式。
WiFi的驅(qū)動(dòng)配置好后,應(yīng)用層和以太網(wǎng)接口模式編程完全相同。由于此設(shè)計(jì)音視頻數(shù)據(jù)量較大,不宜采用UDP,因?yàn)楫?dāng)數(shù)據(jù)量過(guò)大或傳輸信號(hào)不好時(shí),UDP會(huì)嚴(yán)重丟包,所以最終選擇面向連接的TCP傳輸協(xié)議,保證了系統(tǒng)音視頻有效傳輸。由于TCP是應(yīng)答時(shí)式傳輸數(shù)據(jù),在局域網(wǎng)內(nèi),無(wú)需考慮TCP丟包問(wèn)題,為實(shí)現(xiàn)系統(tǒng)功能提供了可靠的保障。
3 軟件設(shè)計(jì)
軟件分為用戶(hù)界面設(shè)計(jì)和數(shù)據(jù)處理、傳輸?shù)饶K的設(shè)計(jì)。
3.1 基于多線(xiàn)程的軟件總體設(shè)計(jì)
系統(tǒng)軟件架構(gòu)如圖1所示,它是音視頻單向采集、壓縮、傳輸、接收、解壓縮、處理回放音視頻流控制過(guò)程,各個(gè)模塊采用線(xiàn)程處理,由信號(hào)量處理線(xiàn)程間優(yōu)先級(jí)構(gòu)成循環(huán)的線(xiàn)程,有效地處理了音視頻數(shù)據(jù)流。系統(tǒng)各功能模塊化,便于修改和移植,代碼簡(jiǎn)短精悍。
圖1 軟件架構(gòu)
3.2 回音消除
系統(tǒng)開(kāi)始時(shí)出現(xiàn)回音和延時(shí)問(wèn)題,延時(shí)是由于采集傳輸過(guò)程中造成的,所以只能盡量縮短延時(shí),而無(wú)法做到即時(shí)播放,這也是此系統(tǒng)的缺陷之一?;匾羰怯捎谘訒r(shí)造成的,文中最后采用開(kāi)源的Speex算法消除了回音。具體做法:將該算法編譯成庫(kù)文件,加入到Linux內(nèi)核,即可以使用Speex 的API函數(shù),實(shí)現(xiàn)音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據(jù)本地系統(tǒng)時(shí)鐘確定實(shí)際時(shí)間,通過(guò)調(diào)整音頻播放速度來(lái)達(dá)到音視頻同步。
首先選擇一個(gè)本地系統(tǒng)時(shí)鐘參考(LSCR),然后將LSCR發(fā)送到視頻解碼器和音頻解碼器,由這兩個(gè)解碼器根據(jù)各幀的PTS值對(duì)照本地系統(tǒng)時(shí)鐘,參考產(chǎn)生各幀準(zhǔn)確的顯示或回放的時(shí)間。也就是說(shuō),生成輸出數(shù)據(jù)流時(shí)依據(jù)本地參考時(shí)鐘上的時(shí)間給每個(gè)數(shù)據(jù)塊都打上時(shí)間戳(一般包括開(kāi)始時(shí)間和結(jié)束時(shí)間)。在播放時(shí),讀取數(shù)據(jù)塊上的時(shí)間戳,同時(shí)根據(jù)本地系統(tǒng)時(shí)鐘參考上的時(shí)間來(lái)安排播放。
整個(gè)系統(tǒng)的音視頻同步數(shù)據(jù)流程如圖2所示。
圖2 音視頻同步數(shù)據(jù)流程
4 音視頻通道管理
為了節(jié)約內(nèi)存資源,便于通道的管理,本設(shè)計(jì)采用分通道的線(xiàn)程池管理,音、視頻分別由自己的通道完成任務(wù)。
音視頻采集使用同一個(gè)線(xiàn)程處理,采用select系統(tǒng)調(diào)用,每執(zhí)行到此線(xiàn)程,就判斷音視頻設(shè)備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區(qū),再交給音視頻采集壓縮線(xiàn)程,最后再交給發(fā)送線(xiàn)程打包后采用TCP發(fā)送。需要說(shuō)明的是本設(shè)計(jì)線(xiàn)程之間均采用信號(hào)量完成線(xiàn)程間基于TCP的音視頻軟件架構(gòu)的同步管理。發(fā)送完以后進(jìn)入接收線(xiàn)程等待對(duì)方發(fā)音視頻數(shù)據(jù)。在接受端由接收線(xiàn)程接收到數(shù)據(jù)以后,判斷數(shù)據(jù)的包頭,再交由解壓縮處理線(xiàn)程處理,然后播放音視頻,再等待對(duì)方發(fā)數(shù)據(jù)到本機(jī)。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個(gè)系統(tǒng)實(shí)時(shí)性基本達(dá)到要求。嵌入式音視頻管理模塊實(shí)現(xiàn)了整個(gè)系統(tǒng)的統(tǒng)籌控制和實(shí)時(shí)處理,為音視頻數(shù)據(jù)管理提供可靠的保證。
5 結(jié) 語(yǔ)
目前基于嵌入式無(wú)線(xiàn)終端的視頻監(jiān)控產(chǎn)品由于無(wú)需布線(xiàn)、傳輸距離遠(yuǎn)、環(huán)境適應(yīng)能力強(qiáng),性能穩(wěn)定及通信便利等優(yōu)勢(shì)而倍受青睞,在安全監(jiān)察、巡查通信、施工聯(lián)絡(luò)、人員調(diào)配等場(chǎng)合發(fā)揮著不可替代的作用。本系統(tǒng)是基于嵌入式Linux的無(wú)線(xiàn)音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經(jīng)過(guò)開(kāi)關(guān)電源芯片降壓的方式給整個(gè)系統(tǒng)供電,其效率較傳統(tǒng)直流穩(wěn)壓大大提高。在戶(hù)外可視化娛樂(lè)、施工現(xiàn)場(chǎng)監(jiān)控、大型安保聯(lián)絡(luò)等場(chǎng)合均可使用,具有廣泛的應(yīng)用前景。
注:本文指導(dǎo)老師為吳延海。
參考文獻(xiàn)
[1] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC[M].北京:人民郵電出版社,2009.
[2] 陳爽.Linux與Qt程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.
[3] 馮國(guó)進(jìn).Linux驅(qū)動(dòng)程序開(kāi)發(fā)實(shí)例[M].北京:機(jī)械工業(yè)出版社,2011.
[4] 孫瓊.嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2006.
[5] 馮進(jìn)國(guó).嵌入式Linux驅(qū)動(dòng)程序設(shè)計(jì)從入門(mén)到精通[M].北京:清華大學(xué)出版社,2008.
[6] LOVE Robert.Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2011.
[7] 孫更新.Linux內(nèi)核注釋[M].北京:中國(guó)鐵道出版社,2011.
[8] 劉學(xué)勇.Linux C編程從入門(mén)到精通[M].北京:電子工業(yè)出版社,2012.
[9] 寧方明.Linux系統(tǒng)管理[M].北京:人民郵電出版社,2012.
[10] 熊茂華.嵌入式Linux實(shí)時(shí)操作系統(tǒng)及應(yīng)用編程[M].北京:清華大學(xué)出版社,2011.