基于ARM Linux的無線音視頻對(duì)講系統(tǒng)
3.2 回音消除
系統(tǒng)開始時(shí)出現(xiàn)回音和延時(shí)問題,延時(shí)是由于采集傳輸過程中造成的,所以只能盡量縮短延時(shí),而無法做到即時(shí)播放,這也是此系統(tǒng)的缺陷之一?;匾羰怯捎谘訒r(shí)造成的,文中最后采用開源的Speex算法消除了回音。具體做法:將該算法編譯成庫(kù)文件,加入到Linux內(nèi)核,即可以使用Speex 的API函數(shù),實(shí)現(xiàn)音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據(jù)本地系統(tǒng)時(shí)鐘確定實(shí)際時(shí)間,通過調(diào)整音頻播放速度來達(dá)到音視頻同步。
首先選擇一個(gè)本地系統(tǒng)時(shí)鐘參考(LSCR),然后將LSCR發(fā)送到視頻解碼器和音頻解碼器,由這兩個(gè)解碼器根據(jù)各幀的PTS值對(duì)照本地系統(tǒng)時(shí)鐘,參考產(chǎn)生各幀準(zhǔn)確的顯示或回放的時(shí)間。也就是說,生成輸出數(shù)據(jù)流時(shí)依據(jù)本地參考時(shí)鐘上的時(shí)間給每個(gè)數(shù)據(jù)塊都打上時(shí)間戳(一般包括開始時(shí)間和結(jié)束時(shí)間)。在播放時(shí),讀取數(shù)據(jù)塊上的時(shí)間戳,同時(shí)根據(jù)本地系統(tǒng)時(shí)鐘參考上的時(shí)間來安排播放。
整個(gè)系統(tǒng)的音視頻同步數(shù)據(jù)流程如圖2所示。
圖2 音視頻同步數(shù)據(jù)流程
4. 音視頻通道管理
為了節(jié)約內(nèi)存資源,便于通道的管理,本設(shè)計(jì)采用分通道的線程池管理,音、視頻分別由自己的通道完成任務(wù)。
音視頻采集使用同一個(gè)線程處理,采用select系統(tǒng)調(diào)用,每執(zhí)行到此線程,就判斷音視頻設(shè)備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區(qū),再交給音視頻采集壓縮線程,最后再交給發(fā)送線程打包后采用TCP發(fā)送。需要說明的是本設(shè)計(jì)線程之間均采用信號(hào)量完成線程間基于TCP的音視頻軟件架構(gòu)的同步管理。發(fā)送完以后進(jìn)入接收線程等待對(duì)方發(fā)音視頻數(shù)據(jù)。在接受端由接收線程接收到數(shù)據(jù)以后,判斷數(shù)據(jù)的包頭,再交由解壓縮處理線程處理,然后播放音視頻,再等待對(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ǔ)
目前基于嵌入式無線終端的視頻監(jiān)控產(chǎ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的無線音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經(jīng)過開關(guān)電源芯片降壓的方式給整個(gè)系統(tǒng)供電,其效率較傳統(tǒng)直流穩(wěn)壓大大提高。在戶外可視化娛樂、施工現(xiàn)場(chǎng)監(jiān)控、大型安保聯(lián)絡(luò)等場(chǎng)合均可使用,具有廣泛的應(yīng)用前景。
評(píng)論