鄒振華+田敏+索世昌+藍世強+趙雷+李磊
摘 要: 該系統是以Linux作為操作系統,并以S3C6410微處理器為硬件平臺的嵌入式應用系統。系統采用CMOS攝像頭獲取圖像,通過WiFi無線傳輸;利用S3C6410獨特的MFC功能,實現H.264高速、高效率硬件壓縮和解壓;通信雙機采用多線程方式實現了音視頻實時傳輸;可在4.3寸的彩色液晶屏上顯示本機及遠端機清晰的圖像;音頻與視頻可全雙工同步傳輸。該系統功能實用、操作簡潔,能夠廣泛應用于小型音視頻服務或網絡音視頻電子產品,可替代傳統對講系統。
關鍵詞: Linux; S3C6410; 嵌入式應用系統; WiFi; 音視頻; 全雙工
中圖分類號: TN911.73?34 文獻標識碼: A 文章編號: 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 引 言
隨著數字化和網絡化時代的到來,尤其是寬帶無線網絡的發展,為音視頻這樣大數據量傳輸業務在無線網絡上的應用提供了契機。同時由于音視頻獨特的感官特性,使其相關的應用需求也變得越來越迫切。無線多媒體是多媒體和移動通信這兩個領域的技術相互融合的產物,成為當今通信領域的一個熱點。鑒于Linux內核的開源性,采用其作為操作系統,從而使整個系統具有更好的實時性和穩定性。整個系統以ARM11為核心處理器、采用新一代視頻編解碼標準H.264[1]進行編譯碼,并通過無線網絡傳輸音視頻。它充分利用S3C6410微處理器內部集成的多媒體編解碼器(Multi?Format video Codec,MFC),有效提高了系統的性價比。整個系統為無線多媒體音視頻的傳輸提供了一個好的解決方案,可廣泛應用在遠程監控、視頻電話等各種領域,具有較好的實用價值和推廣應用前景。
1 系統總體方案設計
通信雙方系統中音頻和視頻采集模塊負責采集模擬信號,并將采集到的音視頻數據送到音視頻管理模塊,經過壓縮處理,再加上數據包頭一起由WiFi發送到對方;對方接收到數據后,經過相關處理,判斷音視頻幀類型,再送往解壓縮處理模塊,恢復出音視頻數據。通信雙方設備均包含嵌入式音視頻管理模塊和無線收發模塊。無線WiFi收發模塊運行在2.4 GHz頻段,符合IEEE 802.11b無線局域網協議標準。
2 系統硬件設計
系統硬件設計以ARM11為核心微處理器,主頻為532 MHz,能夠滿足實時處理的要求,其內部集成有256 MB SDRAM、2 GB FLASH、音頻錄、放音接口、Camera視頻接口、無線WiFi接口、LCD接口、SD卡接口等,同時以開源的Linux 2.6.28為內核,yaffs2為根文件系統,Qtopia 4.4.3作為用戶界面,為開發調試和系統設計提供了良好的平臺。
2.1 音視頻采集模塊
音頻采用處理器內部集成的IIS(Inter?IC Sound Bus)音頻接口和WM9714音頻芯片。IIS是飛利浦公司為數字音頻設備之間的音頻數據傳輸而定制的一種總線標準。在飛利浦公司的IIS標準中,既規定了硬件接口系統,也規范了音頻數據的格式。基于此硬件及接口規范,實現了集成音頻輸出、Linein輸入和Mic輸入功能。
視頻采集使用的是OV9650CMOS攝像頭模塊,分辨率高達130萬像素,可直接與OK6410開發板的Camera接口相接。適用于高端消費類電子產品、工業控制、車載導航、多媒體終端、行業PDA、嵌入式教育培訓、個人學習等。其結構較簡單,提供硬件驅動程序,便于使用和調試。
2.2 無線傳輸模塊
本系統的無線傳輸模塊采用工作在2.4 GHz公共頻段的WiFi模塊來實現,它遵循IEEE 802.11b/g網絡標準,可用于在后期開發中將終端接入Internet,其最高數據率為54 Mb/s,支持WinCE、Linux系統。室內通信距離可達100 m,室外開闊地可達300 m。只需要對ARM?Linux操作系統進行簡單的配置就可以由以太網連接模式轉化為雙機通信AD?HOC模式,在系統啟動之后,設計了基于Qt[2]的窗口設計,方便切換連接模式。
選用WiFi具有很好的可擴展性,可以通過無線路由器的WiFi連接到廣域網,具有很好的應用前景。同時大多數手機等終端設備具有WiFi功能,后期還可以將軟件升級至Andriod系統,方便開發和移植。它減少了音視頻實時傳輸的開發成本和周期,也給現代移動通信提供了一種新的音視頻通信方式。
WiFi的驅動配置好后,應用層和以太網接口模式編程完全相同。由于此設計音視頻數據量較大,不宜采用UDP,因為當數據量過大或傳輸信號不好時,UDP會嚴重丟包,所以最終選擇面向連接的TCP傳輸協議,保證了系統音視頻有效傳輸。由于TCP是應答時式傳輸數據,在局域網內,無需考慮TCP丟包問題,為實現系統功能提供了可靠的保障。
3 軟件設計
軟件分為用戶界面設計和數據處理、傳輸等模塊的設計。
3.1 基于多線程的軟件總體設計
系統軟件架構如圖1所示,它是音視頻單向采集、壓縮、傳輸、接收、解壓縮、處理回放音視頻流控制過程,各個模塊采用線程處理,由信號量處理線程間優先級構成循環的線程,有效地處理了音視頻數據流。系統各功能模塊化,便于修改和移植,代碼簡短精悍。
圖1 軟件架構
3.2 回音消除
系統開始時出現回音和延時問題,延時是由于采集傳輸過程中造成的,所以只能盡量縮短延時,而無法做到即時播放,這也是此系統的缺陷之一。回音是由于延時造成的,文中最后采用開源的Speex算法消除了回音。具體做法:將該算法編譯成庫文件,加入到Linux內核,即可以使用Speex 的API函數,實現音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據本地系統時鐘確定實際時間,通過調整音頻播放速度來達到音視頻同步。
首先選擇一個本地系統時鐘參考(LSCR),然后將LSCR發送到視頻解碼器和音頻解碼器,由這兩個解碼器根據各幀的PTS值對照本地系統時鐘,參考產生各幀準確的顯示或回放的時間。也就是說,生成輸出數據流時依據本地參考時鐘上的時間給每個數據塊都打上時間戳(一般包括開始時間和結束時間)。在播放時,讀取數據塊上的時間戳,同時根據本地系統時鐘參考上的時間來安排播放。
整個系統的音視頻同步數據流程如圖2所示。
圖2 音視頻同步數據流程
4 音視頻通道管理
為了節約內存資源,便于通道的管理,本設計采用分通道的線程池管理,音、視頻分別由自己的通道完成任務。
音視頻采集使用同一個線程處理,采用select系統調用,每執行到此線程,就判斷音視頻設備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區,再交給音視頻采集壓縮線程,最后再交給發送線程打包后采用TCP發送。需要說明的是本設計線程之間均采用信號量完成線程間基于TCP的音視頻軟件架構的同步管理。發送完以后進入接收線程等待對方發音視頻數據。在接受端由接收線程接收到數據以后,判斷數據的包頭,再交由解壓縮處理線程處理,然后播放音視頻,再等待對方發數據到本機。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個系統實時性基本達到要求。嵌入式音視頻管理模塊實現了整個系統的統籌控制和實時處理,為音視頻數據管理提供可靠的保證。
5 結 語
目前基于嵌入式無線終端的視頻監控產品由于無需布線、傳輸距離遠、環境適應能力強,性能穩定及通信便利等優勢而倍受青睞,在安全監察、巡查通信、施工聯絡、人員調配等場合發揮著不可替代的作用。本系統是基于嵌入式Linux的無線音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經過開關電源芯片降壓的方式給整個系統供電,其效率較傳統直流穩壓大大提高。在戶外可視化娛樂、施工現場監控、大型安保聯絡等場合均可使用,具有廣泛的應用前景。
注:本文指導老師為吳延海。
參考文獻
[1] 畢厚杰.新一代視頻壓縮編碼標準H.264/AVC[M].北京:人民郵電出版社,2009.
[2] 陳爽.Linux與Qt程序設計[M].北京:清華大學出版社,2011.
[3] 馮國進.Linux驅動程序開發實例[M].北京:機械工業出版社,2011.
[4] 孫瓊.嵌入式Linux應用程序開發詳解[M].北京:人民郵電出版社,2006.
[5] 馮進國.嵌入式Linux驅動程序設計從入門到精通[M].北京:清華大學出版社,2008.
[6] LOVE Robert.Linux內核設計與實現[M].北京:機械工業出版社,2011.
[7] 孫更新.Linux內核注釋[M].北京:中國鐵道出版社,2011.
[8] 劉學勇.Linux C編程從入門到精通[M].北京:電子工業出版社,2012.
[9] 寧方明.Linux系統管理[M].北京:人民郵電出版社,2012.
[10] 熊茂華.嵌入式Linux實時操作系統及應用編程[M].北京:清華大學出版社,2011.
視頻采集使用的是OV9650CMOS攝像頭模塊,分辨率高達130萬像素,可直接與OK6410開發板的Camera接口相接。適用于高端消費類電子產品、工業控制、車載導航、多媒體終端、行業PDA、嵌入式教育培訓、個人學習等。其結構較簡單,提供硬件驅動程序,便于使用和調試。
2.2 無線傳輸模塊
本系統的無線傳輸模塊采用工作在2.4 GHz公共頻段的WiFi模塊來實現,它遵循IEEE 802.11b/g網絡標準,可用于在后期開發中將終端接入Internet,其最高數據率為54 Mb/s,支持WinCE、Linux系統。室內通信距離可達100 m,室外開闊地可達300 m。只需要對ARM?Linux操作系統進行簡單的配置就可以由以太網連接模式轉化為雙機通信AD?HOC模式,在系統啟動之后,設計了基于Qt[2]的窗口設計,方便切換連接模式。
選用WiFi具有很好的可擴展性,可以通過無線路由器的WiFi連接到廣域網,具有很好的應用前景。同時大多數手機等終端設備具有WiFi功能,后期還可以將軟件升級至Andriod系統,方便開發和移植。它減少了音視頻實時傳輸的開發成本和周期,也給現代移動通信提供了一種新的音視頻通信方式。
WiFi的驅動配置好后,應用層和以太網接口模式編程完全相同。由于此設計音視頻數據量較大,不宜采用UDP,因為當數據量過大或傳輸信號不好時,UDP會嚴重丟包,所以最終選擇面向連接的TCP傳輸協議,保證了系統音視頻有效傳輸。由于TCP是應答時式傳輸數據,在局域網內,無需考慮TCP丟包問題,為實現系統功能提供了可靠的保障。
3 軟件設計
軟件分為用戶界面設計和數據處理、傳輸等模塊的設計。
3.1 基于多線程的軟件總體設計
系統軟件架構如圖1所示,它是音視頻單向采集、壓縮、傳輸、接收、解壓縮、處理回放音視頻流控制過程,各個模塊采用線程處理,由信號量處理線程間優先級構成循環的線程,有效地處理了音視頻數據流。系統各功能模塊化,便于修改和移植,代碼簡短精悍。
圖1 軟件架構
3.2 回音消除
系統開始時出現回音和延時問題,延時是由于采集傳輸過程中造成的,所以只能盡量縮短延時,而無法做到即時播放,這也是此系統的缺陷之一。回音是由于延時造成的,文中最后采用開源的Speex算法消除了回音。具體做法:將該算法編譯成庫文件,加入到Linux內核,即可以使用Speex 的API函數,實現音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據本地系統時鐘確定實際時間,通過調整音頻播放速度來達到音視頻同步。
首先選擇一個本地系統時鐘參考(LSCR),然后將LSCR發送到視頻解碼器和音頻解碼器,由這兩個解碼器根據各幀的PTS值對照本地系統時鐘,參考產生各幀準確的顯示或回放的時間。也就是說,生成輸出數據流時依據本地參考時鐘上的時間給每個數據塊都打上時間戳(一般包括開始時間和結束時間)。在播放時,讀取數據塊上的時間戳,同時根據本地系統時鐘參考上的時間來安排播放。
整個系統的音視頻同步數據流程如圖2所示。
圖2 音視頻同步數據流程
4 音視頻通道管理
為了節約內存資源,便于通道的管理,本設計采用分通道的線程池管理,音、視頻分別由自己的通道完成任務。
音視頻采集使用同一個線程處理,采用select系統調用,每執行到此線程,就判斷音視頻設備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區,再交給音視頻采集壓縮線程,最后再交給發送線程打包后采用TCP發送。需要說明的是本設計線程之間均采用信號量完成線程間基于TCP的音視頻軟件架構的同步管理。發送完以后進入接收線程等待對方發音視頻數據。在接受端由接收線程接收到數據以后,判斷數據的包頭,再交由解壓縮處理線程處理,然后播放音視頻,再等待對方發數據到本機。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個系統實時性基本達到要求。嵌入式音視頻管理模塊實現了整個系統的統籌控制和實時處理,為音視頻數據管理提供可靠的保證。
5 結 語
目前基于嵌入式無線終端的視頻監控產品由于無需布線、傳輸距離遠、環境適應能力強,性能穩定及通信便利等優勢而倍受青睞,在安全監察、巡查通信、施工聯絡、人員調配等場合發揮著不可替代的作用。本系統是基于嵌入式Linux的無線音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經過開關電源芯片降壓的方式給整個系統供電,其效率較傳統直流穩壓大大提高。在戶外可視化娛樂、施工現場監控、大型安保聯絡等場合均可使用,具有廣泛的應用前景。
注:本文指導老師為吳延海。
參考文獻
[1] 畢厚杰.新一代視頻壓縮編碼標準H.264/AVC[M].北京:人民郵電出版社,2009.
[2] 陳爽.Linux與Qt程序設計[M].北京:清華大學出版社,2011.
[3] 馮國進.Linux驅動程序開發實例[M].北京:機械工業出版社,2011.
[4] 孫瓊.嵌入式Linux應用程序開發詳解[M].北京:人民郵電出版社,2006.
[5] 馮進國.嵌入式Linux驅動程序設計從入門到精通[M].北京:清華大學出版社,2008.
[6] LOVE Robert.Linux內核設計與實現[M].北京:機械工業出版社,2011.
[7] 孫更新.Linux內核注釋[M].北京:中國鐵道出版社,2011.
[8] 劉學勇.Linux C編程從入門到精通[M].北京:電子工業出版社,2012.
[9] 寧方明.Linux系統管理[M].北京:人民郵電出版社,2012.
[10] 熊茂華.嵌入式Linux實時操作系統及應用編程[M].北京:清華大學出版社,2011.
視頻采集使用的是OV9650CMOS攝像頭模塊,分辨率高達130萬像素,可直接與OK6410開發板的Camera接口相接。適用于高端消費類電子產品、工業控制、車載導航、多媒體終端、行業PDA、嵌入式教育培訓、個人學習等。其結構較簡單,提供硬件驅動程序,便于使用和調試。
2.2 無線傳輸模塊
本系統的無線傳輸模塊采用工作在2.4 GHz公共頻段的WiFi模塊來實現,它遵循IEEE 802.11b/g網絡標準,可用于在后期開發中將終端接入Internet,其最高數據率為54 Mb/s,支持WinCE、Linux系統。室內通信距離可達100 m,室外開闊地可達300 m。只需要對ARM?Linux操作系統進行簡單的配置就可以由以太網連接模式轉化為雙機通信AD?HOC模式,在系統啟動之后,設計了基于Qt[2]的窗口設計,方便切換連接模式。
選用WiFi具有很好的可擴展性,可以通過無線路由器的WiFi連接到廣域網,具有很好的應用前景。同時大多數手機等終端設備具有WiFi功能,后期還可以將軟件升級至Andriod系統,方便開發和移植。它減少了音視頻實時傳輸的開發成本和周期,也給現代移動通信提供了一種新的音視頻通信方式。
WiFi的驅動配置好后,應用層和以太網接口模式編程完全相同。由于此設計音視頻數據量較大,不宜采用UDP,因為當數據量過大或傳輸信號不好時,UDP會嚴重丟包,所以最終選擇面向連接的TCP傳輸協議,保證了系統音視頻有效傳輸。由于TCP是應答時式傳輸數據,在局域網內,無需考慮TCP丟包問題,為實現系統功能提供了可靠的保障。
3 軟件設計
軟件分為用戶界面設計和數據處理、傳輸等模塊的設計。
3.1 基于多線程的軟件總體設計
系統軟件架構如圖1所示,它是音視頻單向采集、壓縮、傳輸、接收、解壓縮、處理回放音視頻流控制過程,各個模塊采用線程處理,由信號量處理線程間優先級構成循環的線程,有效地處理了音視頻數據流。系統各功能模塊化,便于修改和移植,代碼簡短精悍。
圖1 軟件架構
3.2 回音消除
系統開始時出現回音和延時問題,延時是由于采集傳輸過程中造成的,所以只能盡量縮短延時,而無法做到即時播放,這也是此系統的缺陷之一。回音是由于延時造成的,文中最后采用開源的Speex算法消除了回音。具體做法:將該算法編譯成庫文件,加入到Linux內核,即可以使用Speex 的API函數,實現音頻的回音消除。
3.3 嵌入式音視頻的同步
本文的基本思想是以視頻流為主媒體流,音頻流為從媒體流,視頻的播放速率保持不變,根據本地系統時鐘確定實際時間,通過調整音頻播放速度來達到音視頻同步。
首先選擇一個本地系統時鐘參考(LSCR),然后將LSCR發送到視頻解碼器和音頻解碼器,由這兩個解碼器根據各幀的PTS值對照本地系統時鐘,參考產生各幀準確的顯示或回放的時間。也就是說,生成輸出數據流時依據本地參考時鐘上的時間給每個數據塊都打上時間戳(一般包括開始時間和結束時間)。在播放時,讀取數據塊上的時間戳,同時根據本地系統時鐘參考上的時間來安排播放。
整個系統的音視頻同步數據流程如圖2所示。
圖2 音視頻同步數據流程
4 音視頻通道管理
為了節約內存資源,便于通道的管理,本設計采用分通道的線程池管理,音、視頻分別由自己的通道完成任務。
音視頻采集使用同一個線程處理,采用select系統調用,每執行到此線程,就判斷音視頻設備是否就緒,若就緒即采集音頻或視頻到音視頻緩沖區,再交給音視頻采集壓縮線程,最后再交給發送線程打包后采用TCP發送。需要說明的是本設計線程之間均采用信號量完成線程間基于TCP的音視頻軟件架構的同步管理。發送完以后進入接收線程等待對方發音視頻數據。在接受端由接收線程接收到數據以后,判斷數據的包頭,再交由解壓縮處理線程處理,然后播放音視頻,再等待對方發數據到本機。
由于處理器的高速處理和高效率視頻硬件H.264解壓縮,使得整個系統實時性基本達到要求。嵌入式音視頻管理模塊實現了整個系統的統籌控制和實時處理,為音視頻數據管理提供可靠的保證。
5 結 語
目前基于嵌入式無線終端的視頻監控產品由于無需布線、傳輸距離遠、環境適應能力強,性能穩定及通信便利等優勢而倍受青睞,在安全監察、巡查通信、施工聯絡、人員調配等場合發揮著不可替代的作用。本系統是基于嵌入式Linux的無線音視頻通信手持式終端,其體積較小、攜帶方便,采用鋰電池經過開關電源芯片降壓的方式給整個系統供電,其效率較傳統直流穩壓大大提高。在戶外可視化娛樂、施工現場監控、大型安保聯絡等場合均可使用,具有廣泛的應用前景。
注:本文指導老師為吳延海。
參考文獻
[1] 畢厚杰.新一代視頻壓縮編碼標準H.264/AVC[M].北京:人民郵電出版社,2009.
[2] 陳爽.Linux與Qt程序設計[M].北京:清華大學出版社,2011.
[3] 馮國進.Linux驅動程序開發實例[M].北京:機械工業出版社,2011.
[4] 孫瓊.嵌入式Linux應用程序開發詳解[M].北京:人民郵電出版社,2006.
[5] 馮進國.嵌入式Linux驅動程序設計從入門到精通[M].北京:清華大學出版社,2008.
[6] LOVE Robert.Linux內核設計與實現[M].北京:機械工業出版社,2011.
[7] 孫更新.Linux內核注釋[M].北京:中國鐵道出版社,2011.
[8] 劉學勇.Linux C編程從入門到精通[M].北京:電子工業出版社,2012.
[9] 寧方明.Linux系統管理[M].北京:人民郵電出版社,2012.
[10] 熊茂華.嵌入式Linux實時操作系統及應用編程[M].北京:清華大學出版社,2011.