摘 要:提出一種基于S3C2440 A硬件平臺和嵌入式Linux操作系統(tǒng)的無線視頻傳輸系統(tǒng)設計方案,介紹系統(tǒng)的總體設計和主要功能模塊的設計與實現(xiàn),主要包括視頻采集模塊、無線視頻傳輸模塊的硬件設計,嵌入式Linux的驅動程序移植、MPEG-4數(shù)字視頻軟件壓縮以及應用程序實現(xiàn)等。該系統(tǒng)實現(xiàn)了802.11無線局域網(wǎng)內(nèi)的視頻傳輸,實時監(jiān)測網(wǎng)絡的數(shù)據(jù)流量和擁塞狀況,自動調(diào)節(jié)視頻的壓縮比,提高網(wǎng)絡傳輸質(zhì)量,保證視頻播放流暢性,可靠性高且易于使用。
關鍵詞:嵌入式Linux;無線視頻傳輸;MPEG-4視頻采集;驅動程序;軟件壓縮
中圖分類號:TN919.8文獻標識碼:B
文章編號:1004-373X(2010)04-070-03
Design of Wireless Video Transmission System Based on 802.11
ZHANG Cunli,WU Yi,HUANG Hongqiang,YAN Zeqiu
(School of Physics and OptoElectronics Technology,F(xiàn)ujian Normal University,F(xiàn)uzhou,350007,China)
Abstract:The design of a wireless video transmission system based on S3C2440A and embedded Linux OS is presented,it mainly introduces structure of the system and functions of the key modules,such as hardware design of video capturing and wireless video transmission modules,implement of the driver transplantation based on Linux,MPEG-4 digital video software encode and the application program software.The video transmission based on WLAN and this system has been realized,real-time monitoring network data flow and congestion conditions,controlling the video compression ratio automatically,improving the network transmission quality,ensuring the fluency of video playing.High reliability and convenient usage are achieved.
Keywords:embedded Linux;wireless video transmission;MPEG-4 video capturing;device driver;software compression
0 引 言
隨著無線通信技術和計算機網(wǎng)絡技術的飛速發(fā)展,無線網(wǎng)絡傳輸帶寬的不斷提高,實時數(shù)據(jù)傳輸能力不斷增強,無線局域網(wǎng)日益普及,使得基于無線局域網(wǎng)的視頻傳輸成為研究熱點。與有線網(wǎng)絡相比,無線網(wǎng)絡具有組網(wǎng)靈活,可擴展性,便攜性好,網(wǎng)絡改造方便,維護費用低等優(yōu)點。
在此提出一種基于嵌入式Linux操作系統(tǒng),采用ARM920T內(nèi)核的S3C2440 A嵌入式微處理器為軟硬件平臺的實時視頻無線傳輸系統(tǒng),該系統(tǒng)可將經(jīng)過MPEG-4軟件壓縮編碼后的視頻圖像通過802.11無線網(wǎng)絡傳輸?shù)椒掌鳎詫崿F(xiàn)視頻圖像的分析、存儲和顯示功能。
文獻[1-6]在無線視頻傳輸系統(tǒng)設計方面都做了相關的研究。文獻[1]綜合介紹了無線視頻監(jiān)控系統(tǒng)發(fā)展趨勢和所涉及的關鍵技術,討論了基于不同網(wǎng)絡的無線視頻監(jiān)控系統(tǒng)的應用及無線視頻監(jiān)控的發(fā)展方向;文獻[2,3]介紹了一種基于S3C2410硬件平臺和嵌入式WinCE操作系統(tǒng)的無線視頻監(jiān)控系統(tǒng)總體設計方案;文獻[4]提出了一種基于ARM9微處理器AT91-RM9200的嵌入式多路視頻監(jiān)控系統(tǒng)方案;文獻[5],文獻[6]分別介紹了一種基于S3C2410硬件平臺、S3C2440硬件平臺和嵌入式Linux系統(tǒng)的無線視頻監(jiān)控系統(tǒng)。其中,文獻[3,4]中采用的是硬件壓縮芯片來實現(xiàn)MPEG-4的壓縮編碼,文獻[5]采用的是對采集到的圖像進行JPEG壓縮。與S3C2410相比較,S3C2440的主頻提高了,視頻播放效果也更好;而Linux比WinCE易于裁減,移植性、實時性更好;使用MPEG-4硬件壓縮的性價比不高,可移植性以及擴展性差,不利于對算法進行改進和擴展;使用JPEG壓縮,在畫面變動較小的情況下,能提供相當不錯的圖像質(zhì)量,但其壓縮比不能太高,否則會影響視頻質(zhì)量,還會導致馬賽克等編碼劣化的現(xiàn)象。
1 系統(tǒng)總體設計
系統(tǒng)設計采用模塊化思想。首先,采用USB攝像頭采集實時視頻信息,通過MPEG-4對采集的數(shù)字視頻進行軟件壓縮編碼,生成MPEG-4碼流,然后通過802.11g無線傳輸模塊將MPEG-4碼流傳輸?shù)綗o線接入點(Access Point,AP),最后經(jīng)過AP轉發(fā)到接收服務器,客戶端用戶可通過有線或無線方式訪問服務器,獲取遠程視頻影像。視頻傳輸系統(tǒng)總體結構框圖如圖1所示。
圖1 系統(tǒng)總體結構框圖
2 系統(tǒng)硬件設計
該無線視頻傳輸系統(tǒng)主要由ARM9處理器、視頻采集模塊、網(wǎng)絡通信模塊、電源模塊組成。其硬件組成如圖2所示。
圖2 傳輸系統(tǒng)硬件組成
2.1 系統(tǒng)主控制器
核心CPU采用Samsung公司的主流ARM9處理器S3C2440A。基于ARM920T內(nèi)核,主頻高達400 MHz,有帶(內(nèi)存管理單元,MMU),片上資源豐富,性價比極高,是目前ARM9處理器的一款主流芯片。
核心板標配64 MB Samsung NAND FLASH及64 MB SDRAM,可穩(wěn)定運行Linux,WinCE,VxWorks等嵌入式實時操作系統(tǒng)。
2.2 視頻采集模塊
該系統(tǒng)使用中星微301系列高清芯片USB攝像頭,該攝像頭采用CMOS感光元件。與CCD相比,盡管在成像質(zhì)量上有所差距,但采用500萬像素數(shù)碼相機高檔五玻璃高清鏡頭,使攝像頭的分辨率最高可達1 024×768,而且還提供360°全方位視角,能基本滿足視頻采集的需要。
2.3 無線通信模塊
無線通信模塊主要是通過USB接口的無線網(wǎng)卡實現(xiàn)的。該系統(tǒng)通過使用ASUS WL-167g V2無線網(wǎng)卡在前端監(jiān)控設備與后端接收服務器之間構建無線局域網(wǎng)絡,實現(xiàn)點對點的無縫連接。該無線網(wǎng)卡可與S3C2440A集成的USB主機接口直接相連,工作在2.412~2.472 GHz(歐洲 ETSI)頻段,采用OFDM,CCK,DQPSK,DBPSK等調(diào)制方式,遵從802.11b/g協(xié)議,傳輸速率為54 Mb/s,室內(nèi)最遠距離為40 m,室外最遠距離為330 m,能夠滿足局域網(wǎng)內(nèi)視頻傳輸?shù)囊蟆?/p>
3 系統(tǒng)軟件設計
該系統(tǒng)的軟件設計主要包括操作系統(tǒng)、驅動程序、MPEG-4視頻編碼和應用程序。Linux提供了豐富的網(wǎng)絡和總線協(xié)議棧,能夠降低系統(tǒng)的開發(fā)成本,并縮短開發(fā)周期,因此系統(tǒng)選用內(nèi)核版本2.6的Linux操作系統(tǒng)。系統(tǒng)將USB設備驅動模塊、MPEG-4視頻編碼模塊以及其他基本模塊通過交叉編譯移植到S3C2440A上。
3.1 USB設備驅動模塊的移植
USB設備驅動模塊的移植主要指Linux下無線網(wǎng)卡驅動的移植。因為嵌入式Linux系統(tǒng)是在嵌入式終端上運行的,這就需要將驅動程序移植到嵌入式終端上。實現(xiàn)驅動程序移植的方式主要有兩種[3]:一種是直接將驅動程序編譯到內(nèi)核,在系統(tǒng)內(nèi)核啟動時,直接通過初始化函數(shù)對驅動程序進行加載,在內(nèi)核啟動完成的同時,實現(xiàn)了驅動程序的加載;二是通過模塊加載的方式,在已經(jīng)移植的嵌入式Linux平臺上進行驅動程序的加載。這兩種加載方式,前者需要改變內(nèi)核結構,而且在改變驅動程序時又要進行重復編譯,工作量較大。比較而言,后者的靈活性更大。因此,該系統(tǒng)中無線網(wǎng)卡的驅動加載采用第二種方式。
ASUS WL-167g V2使用的是rt73芯片,該芯片有開源的Linux驅動。由于原Makefile文件并不適合ARM移植,要先對其修改再進行交叉編譯,最后生成驅動rt73.ko文件。將其下載到ARM板上,并使用insmod命令進行加載。加載成功后,搜索附近存在的AP站點,再對網(wǎng)絡進行iwconfig設置MODE,EESID,KEY等參數(shù),并用ping命令測試無線網(wǎng)絡是否連通。
3.2 MPEG-4視頻編碼模塊
實現(xiàn)MPEG-4編碼的方式有硬件壓縮和軟件壓縮兩種。硬件壓縮是利用專門的壓縮芯片對視頻信號進行MPEG-4編碼,而軟件壓縮是使用壓縮軟件對視頻信號進行編碼。該系統(tǒng)主要采用軟件實現(xiàn)視頻信號的編解碼。
Xvid是一個開放源代碼的MPEG-4多媒體編解碼器,它是基于OpenDivX而編寫的。由于Xvid是GNU GPL許可發(fā)布的自由軟件,這意味著,軟件的源代碼是公開提供的,并且程序員可以對代碼進行修改。目前,該系統(tǒng)采用的Xvid版本為Xvid 1.2.1,下載Xvid 1.2.1源碼包xvidcore-1.2.1.tar.gz解壓后,進行交叉編譯,并移植到ARM平臺。根據(jù)實際項目,編譯步驟如下:
(1) 確保arm-linux-gcc交叉編譯工具的正確安裝;
(2) 解壓縮xvidcore 源代碼:
# tar xzvf xvidcore-1.2.1.tar.gz
(3) 進入xvidcore/build/generic目錄,可以執(zhí)行./configure –h來顯示幫助信息。根據(jù)幫助信息設置靜態(tài)鏈接庫和動態(tài)鏈接庫的安裝路徑,配置所用的交叉編譯器。根據(jù)程序安裝的實際情況,執(zhí)行如下命令配置軟件功能,生成platform.inc文件。
#./configure build=arm-linux-gcc host=arm-linux --disable-assembly--prefix=/usr/local/arm/3.4.1/arm-linux
(4) 手工配置platform.inc文件,修改CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc,運行make,makeinstall編譯、安裝源代碼。
(5) 進入examples目錄,運行examples下的Makefile文件,編譯生成xvid_bench,xvid_decraw,xvid_encraw三個文件,將這些文件通過串口下載到目標板上運行即可。
經(jīng)過調(diào)試和優(yōu)化后,在400 MHz主頻下對分辨率為176×144 的QCIF圖像可以達到20 f/s左右的編碼速度,基本實現(xiàn)了實時編碼,可以達到實用的要求。
3.3 網(wǎng)絡傳輸應用程序
實現(xiàn)網(wǎng)絡傳輸?shù)膽贸绦蜍浖饕乔度胧角岸税l(fā)送軟件以及服務器接收軟件的設計與實現(xiàn),包括對嵌入式前端設備的控制與管理,視頻數(shù)據(jù)的接收、存儲、回放視頻質(zhì)量的調(diào)整以及可同時管理多路前端設備,接收多路視頻的功能;嵌入式前端設備與服務器之間數(shù)據(jù)通信的設計與實現(xiàn),包括Socket通信、MPEG-4視頻流的編解碼、數(shù)據(jù)包的封裝、協(xié)議處理等功能。
該系統(tǒng)視頻數(shù)據(jù)發(fā)送和接收的過程如下:前端設備先啟動并處于等待用戶連接的狀態(tài);當服務器需要數(shù)據(jù)時,它首先輸入前端設備的IP地址,向前端設備發(fā)出數(shù)據(jù)請求;前端設備在接收到數(shù)據(jù)請求后,將它的IP組播地址和端口號傳給服務器;服務器收到后,啟動接收數(shù)據(jù)線程,創(chuàng)建用戶播放界面,加入此IP組播組,等待接收數(shù)據(jù),并向前端設備發(fā)回確認信息;前端設備收到確認信息后,向該組播組發(fā)送視頻數(shù)據(jù)。其操作流程如圖3所示。
圖3 應用程序的操作流程圖
4 系統(tǒng)測試
系統(tǒng)測試是在實驗室內(nèi)局域網(wǎng)完成的。把攝像頭插入開發(fā)板USB接口,并通過無線網(wǎng)卡將開發(fā)板接入局域網(wǎng)內(nèi)。啟動開發(fā)板,并通過超級終端設置開發(fā)板IP地址為10.192.3.200。由于服務器端的視頻顯示需要Java環(huán)境,如果瀏覽器不支持Java插件,則需要安裝JDK。安裝成功后,在瀏覽器的地址欄輸入:http://10.192.3.200即可實現(xiàn)視頻的動態(tài)傳輸。測試結果如圖4所示。
圖4 視頻傳輸測試結果
5 結 語
目前已經(jīng)完成了視頻采集驅動模塊、無線網(wǎng)卡驅動模塊的移植,實現(xiàn)了嵌入式前端設備與服務器之間的無線連接。為了提高MPEG-4軟件的壓縮效率,還需要對Xvid代碼進行更深入的研究及優(yōu)化。
由于該系統(tǒng)采用了高性能的ARM9處理器S3C2440A和嵌入式Linux操作系統(tǒng),使其性能基本上能滿足無線視頻傳輸?shù)囊螅⒕哂幸欢ǖ目蓴U展性,能通過功能模塊的擴展?jié)M足更高用戶的需求。
參考文獻
[1]靳銳敏,別紅霞.無線視頻監(jiān)控技術與系統(tǒng)綜述[J].中國多媒體通信,2007(4):12-15.
[2]關學忠.基于WinCE的ARM視頻監(jiān)控系統(tǒng)解析[J].中國公共安全,2008(4):100-103.
[3]王陸林,劉貴如,蔣朝根.基于WLAN的嵌入式視頻監(jiān)控系統(tǒng)的研究與設計[J].西南科技大學學報,2008,23(1):43-47.
[4]王鵬,黃建,呂志剛.基于ARM9的嵌入式多路視頻監(jiān)控系統(tǒng)設計[J].電視技術,2008,32(7):84-86.
[5]郝衛(wèi)東,李靜.基于Linux的嵌入式網(wǎng)絡視頻監(jiān)控系統(tǒng)研究與設計[J].計算機系統(tǒng)應用,2008,17(8):69-72.
[6]王憲,劉井權,戴旻.基于ARM平臺的遠程視頻監(jiān)控系統(tǒng)的研究[J].微計算機信息,2007,23(2):73-75.
[7]錢曉華,郭繼紅.基于嵌入式Linux的無線網(wǎng)卡驅動程序[J].遼寧大學學報:自然科學版,2008(1):55-57.
[8]高雪娟,卓力,王素玉,等.基于H.264標準的無線局域網(wǎng)視頻傳輸系統(tǒng)實現(xiàn)方案[J].測控技術,2008,27(5):15-18.
[9]張金剛.基于ARM和WLAN的室內(nèi)監(jiān)控系統(tǒng)研究[J].長沙通信職業(yè)技術學院學報,2008,7(4):1-5.
[10]譚云福,王云龍,劉國華.基于Internet的遠程視頻監(jiān)視系統(tǒng)的設計與實現(xiàn)[J].微電子學與計算機,2008(7):225-228.