基于ARM Linux的無線音視頻對講系統
3.2 回音消除
系統開始時出現回音和延時問題,延時是由于采集傳輸過程中造成的,所以只能盡量縮短延時,而無法做到即時播放,這也是此系統的缺陷之一。回音是由于延時造成的,文中最后采用開源的Speex算法消除了回音。具體做法:將該算法編譯成庫文件,加入到Linux內核,即可以使用Speex 的API函數,實現音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據本地系統時鐘確定實際時間,通過調整音頻播放速度來達到音視頻同步。
首先選擇一個本地系統時鐘參考(LSCR),然后將LSCR發送到視頻解碼器和音頻解碼器,由這兩個解碼器根據各幀的PTS值對照本地系統時鐘,參考產生各幀準確的顯示或回放的時間。也就是說,生成輸出數據流時依據本地參考時鐘上的時間給每個數據塊都打上時間戳(一般包括開始時間和結束時間)。在播放時,讀取數據塊上的時間戳,同時根據本地系統時鐘參考上的時間來安排播放。
整個系統的音視頻同步數據流程如圖2所示。

圖2 音視頻同步數據流程
4. 音視頻通道管理
為了節約內存資源,便于通道的管理,本設計采用分通道的線程池管理,音、視頻分別由自己的通道完成任務。
音視頻采集使用同一個線程處理,采用select系統調用,每執行到此線程,就判斷音視頻設備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區,再交給音視頻采集壓縮線程,最后再交給發送線程打包后采用TCP發送。需要說明的是本設計線程之間均采用信號量完成線程間基于TCP的音視頻軟件架構的同步管理。發送完以后進入接收線程等待對方發音視頻數據。在接受端由接收線程接收到數據以后,判斷數據的包頭,再交由解壓縮處理線程處理,然后播放音視頻,再等待對方發數據到本機。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個系統實時性基本達到要求。嵌入式音視頻管理模塊實現了整個系統的統籌控制和實時處理,為音視頻數據管理提供可靠的保證。
5. 結語
目前基于嵌入式無線終端的視頻監控產品由于無需布線、傳輸距離遠、環境適應能力強,性能穩定及通信便利等優勢而倍受青睞,在安全監察、巡查通信、施工聯絡、人員調配等場合發揮著不可替代的作用。本系統是基于嵌入式Linux的無線音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經過開關電源芯片降壓的方式給整個系統供電,其效率較傳統直流穩壓大大提高。在戶外可視化娛樂、施工現場監控、大型安保聯絡等場合均可使用,具有廣泛的應用前景。
評論