基于A(yíng)RM的移動(dòng)視頻監控系統

發(fā)布時(shí)間:2010-3-24 19:06    發(fā)布者:李寬
關(guān)鍵詞: arm , 視頻監控系統
嵌入式Linux和無(wú)線(xiàn)網(wǎng)絡(luò )引入到視頻監控系統,闡述了系統的硬件組成;介紹了USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng)實(shí)現的過(guò)程;從嵌入式Linux開(kāi)發(fā)環(huán)境的搭建、嵌入式流媒體服務(wù)器的設計和動(dòng)態(tài)網(wǎng)頁(yè)的設計等方面介紹了軟件系統的具體實(shí)現過(guò)程;對動(dòng)態(tài)網(wǎng)頁(yè)設計所涉及到的雙緩沖技術(shù)進(jìn)行了詳細介紹。實(shí)現結果表明,該系統具有可靠性高、體積小、成本低和使用便利等特點(diǎn),適用于移動(dòng)視頻監控等實(shí)際場(chǎng)合。

0 引 言

傳統的視頻監控系統一般采用PC服務(wù)器的C/S(Client/Server)結構,視頻服務(wù)器由計算主機和許多存放視頻的磁盤(pán)陳列組成,專(zhuān)門(mén)用于視頻的存儲和傳輸。流式傳輸采用的是邊接收邊播放的原則,這需要將多媒體的編、解碼和傳輸技術(shù)很好地結合在一起。目前多媒體的編解碼技術(shù)如MPEG- 4,H.264等,可以以較小的帶寬開(kāi)銷(xiāo)來(lái)實(shí)現較高質(zhì)量的視頻傳輸,然而目前的傳輸技術(shù)卻無(wú)法滿(mǎn)足移動(dòng)視頻監控的需求,因為設備的移動(dòng)速度和所在位置都會(huì )嚴重影響到傳輸。傳統流媒體系統體積大、成本高、可靠性低且移植性差,不能滿(mǎn)足這種特殊場(chǎng)合的應用要求。

針對傳統監控技術(shù)的不足,本文提出了基于ARM的移動(dòng)觀(guān)頻監控的設計與實(shí)現,設計了一種專(zhuān)門(mén)功能、結構簡(jiǎn)單的流媒體服務(wù)器;采用Boa作為Web服務(wù)器,并通過(guò)瀏覽器來(lái)監控,實(shí)現跨平臺監視;采用雙緩沖技術(shù),確保用戶(hù)能夠得到較好、較穩定的播放質(zhì)量;利用USB無(wú)線(xiàn)網(wǎng)卡實(shí)現無(wú)線(xiàn)上網(wǎng),免去布線(xiàn)的煩惱,方便地實(shí)現了移動(dòng)視頻監控的功能。

1 系統硬件設計

硬件平臺是整個(gè)系統運作的基礎。本系統主要由流媒體服務(wù)單元、USB無(wú)線(xiàn)網(wǎng)卡、無(wú)線(xiàn)路由、攝像頭和監控端組成。流媒體服務(wù)單元是整個(gè)系統的核心,主要由嵌入式Linux、嵌入式處理器和外圍器件組成。

嵌入式處理器采用Intel XScale結構的PXA27嵌入式微處理器,最高主頻可達624 MHz;加入wireless MMX技術(shù),大大提升了多媒體處理能力;加入Intel SpeedStep動(dòng)態(tài)管理電源技術(shù),在保證CPU性能的情況下,最大限度地降底移動(dòng)設備的功耗。在處理器豐富資源的基礎上,本系統擴展了64 MB Nand FLASH,64 MB SDRAM,16 MB Nor FLASH,4個(gè)USB主接口以及一個(gè)從接口。USB一主接口接攝像頭,用于采集視頻數據;USB一主接口接無(wú)線(xiàn)網(wǎng)卡,用于發(fā)送視頻數據。無(wú)線(xiàn)網(wǎng)卡采用了 TCP/IP、NETBEUI傳輸協(xié)議,傳輸速率為11 Mb/s,5.5 Mb/s,2 Mb/s,1 Mb/s。其最大覆蓋范圍為35~100 m(室內)、100~300 m(室外),能較好地滿(mǎn)足移動(dòng)視頻監控的要求。本系統硬件組成圖如圖1所示。



以PXA270為核心接收攝像頭采集到的視頻數據,經(jīng)過(guò)編碼后通過(guò)無(wú)線(xiàn)網(wǎng)卡發(fā)送,再經(jīng)由無(wú)線(xiàn)路由接入以太網(wǎng),用戶(hù)通過(guò)Internet接收到視頻信息。

2 USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng)

在Linux系統中,提供了主機側和設備側視角的USB驅動(dòng)框架。從主機側角度而言,需要編寫(xiě)的USB驅動(dòng)程序包括主機控制器驅動(dòng)和設備驅動(dòng)兩大類(lèi)。主機控制器驅動(dòng)程序屬于USB驅動(dòng)程序的核心,這部分在Linux內核源碼中已經(jīng)有很好的支持。本節將重點(diǎn)介紹USB無(wú)線(xiàn)網(wǎng)卡設備驅動(dòng)的實(shí)現。

2.1 USB驅動(dòng)的注冊和注銷(xiāo)

usb_ids描述了這個(gè)USB驅動(dòng)所支持的USB設備列表。



2.2 探測和斷開(kāi)函數

在編寫(xiě)USB無(wú)線(xiàn)網(wǎng)卡設備驅動(dòng)時(shí),很重要的一步是probe()和disconnect()函數,即探測和斷開(kāi)函數,它們分別在設備被插入和拔出的時(shí)候被調用,用于初始化和釋放硬件資源。



2.3 USB請求塊(URB)

USB無(wú)線(xiàn)網(wǎng)卡本身的驅動(dòng)部分的讀寫(xiě)等操作流程有其特殊性,即以USB請求塊(URB)來(lái)貫穿始終。URB是USB主機與無(wú)線(xiàn)網(wǎng)卡設備通信的電波。




3 系統軟件設計

基于A(yíng)RM的移動(dòng)視頻監控的軟件設計包括嵌入式Linux系統開(kāi)發(fā)環(huán)境的搭建與移動(dòng)視頻監控軟件設計兩大部分。

3.1 基于A(yíng)RM的嵌入式Linux開(kāi)發(fā)平臺

本方案采用了Linux嵌入式操作系統,以L(fǎng)inux2.6.24為基礎進(jìn)行裁減定制自己的內核,在編譯內核時(shí)保留必須的文件系統、存儲器、串口、 USB、以太網(wǎng)驅動(dòng),將攝像頭、USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng)以模塊的形式編譯,以減少編譯后內核的大小。Bootloader采用blob,燒寫(xiě)blob后利用 tftp協(xié)議實(shí)現Linux內核和文件系統在Flash上的燒寫(xiě)。在Redhat 9安裝Arm-linux-gcc。建立交叉編譯環(huán)境,實(shí)現流媒體服務(wù)器和Boa在PAX270上的搭建。鑒于現在燒寫(xiě)技術(shù)已經(jīng)很成熟,故不詳細討論。

3.2 移動(dòng)視頻監控軟件的設計

移動(dòng)視頻監控軟件完成的主要功能有:設計流媒體服務(wù)器采集并傳輸攝像頭拍攝的視頻信息;構建嵌入式Web服務(wù)器Boa;動(dòng)態(tài)網(wǎng)頁(yè)的設計以及流媒體服務(wù)器、 web服務(wù)器與瀏覽器之間的通信等任務(wù)。因此系統軟件框架如圖2所示。



3.2.1 流媒體服務(wù)器的設計

流媒體服務(wù)器主程序用于開(kāi)放某個(gè)視頻服務(wù)器端口,并不斷監聽(tīng)端口,如有連接請求則建立連接,建立后流媒體服務(wù)進(jìn)程將不斷向端口提供采集到的視頻數據流同時(shí)也接收客戶(hù)端發(fā)送過(guò)來(lái)的視頻調節命令參數。流媒體服務(wù)器主程序流程圖如圖3所示。



(1)采集視頻數據

系統是在嵌入式Linux系統平臺上采用Video4Linux編程來(lái)采集視頻的。一般攝像頭是直接讀視頻設備,采集到視頻數據并存在文件中。對文件進(jìn)行操作,這樣程序運行效率會(huì )很低。本系統摒棄這種方法,采用mmap(內存映射)方式截取視頻數據。mmap()系統調用使得進(jìn)程之間通過(guò)映射同一個(gè)普通文件實(shí)現共享內存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以向訪(fǎng)問(wèn)普通內存一樣對文件進(jìn)行訪(fǎng)問(wèn),不必再調用read(),write()等操作。采用共享內存通信的一個(gè)顯而易見(jiàn)的好處是效率高,因為進(jìn)程可以直接讀寫(xiě)內存,而不需要任何數據的拷貝。



(2)傳輸視頻數據

本系統通過(guò)網(wǎng)絡(luò )傳輸視頻數據,用套接字(Socket)編程實(shí)現。



3)采集線(xiàn)程與傳輸線(xiàn)程同步

流媒體服務(wù)器的設計有個(gè)關(guān)鍵點(diǎn):保證連續不斷的視頻流。針對這一點(diǎn),本系統采用多線(xiàn)程編程,采集和傳輸并行執行。用互斥量和標志位來(lái)實(shí)現采集線(xiàn)程和傳輸線(xiàn)程的同步。

采集數據時(shí)給互斥量加鎖,直到當前幀采集完并填充完當前幀頭結構體才解鎖互斥量,再開(kāi)始傳輸。同理,傳輸當前幀時(shí)采集線(xiàn)程等待,直到當前幀傳輸完。采集完兩幀數據傳輸第二幀。傳輸完成后,采集完第三幀傳輸第三幀。依此循環(huán),采集完第N幀傳輸第N幀。此時(shí)實(shí)際只傳輸了第2幀到第N幀,即N-1幀。

用戶(hù)的視覺(jué)反應需要時(shí)間,此丟棄第一幀的設計思想并不會(huì )使畫(huà)面失真。反而連續不斷的視頻流傳輸到客戶(hù)端為用戶(hù)能夠獲得良好的視頻質(zhì)量打下了基礎。

采集線(xiàn)程:



3.2.2 動(dòng)態(tài)網(wǎng)頁(yè)的設計

嵌入式Web服務(wù)器是Web服務(wù)器簡(jiǎn)化后的專(zhuān)用系統。本系統選用適合嵌入式系統的Boa Web服務(wù)器。Boa是一個(gè)單任務(wù)的HTTP服務(wù)器,支持能夠實(shí)現動(dòng)態(tài)Web技術(shù)的Java Script技術(shù),源代碼開(kāi)放,性能高。同時(shí)服務(wù)器本身所占空間很小,因而十分適用于嵌入式系統。

鑒于Boa移植技術(shù)已經(jīng)很成熟,故不詳細討論。

Applet是能夠嵌入到一個(gè)HTML頁(yè)面中,且可通過(guò)Web瀏覽器下載和執行的一種Java類(lèi)。它是Java技術(shù)容器(container)的一種特定類(lèi)型。Applet可以通過(guò)網(wǎng)絡(luò )傳輸,由瀏覽器自動(dòng)裝載并執行。這恰恰非常符合本系統的要求,因此選用Applet來(lái)很好地實(shí)現動(dòng)態(tài)網(wǎng)頁(yè),打開(kāi)網(wǎng)頁(yè)就可以看到視頻數據,方便快捷。

(1)設計流程

Applet不能單獨運行,需要嵌入在網(wǎng)頁(yè)中借助瀏覽器的解釋。必須要創(chuàng )建一個(gè)HTML文件來(lái)告訴瀏覽器需裝載什么以及如何運行它。其執行順序如下:

    ①瀏覽器裝入URL;
    ②瀏覽器裝入HTML文檔;
    ③瀏覽器裝入Applet類(lèi);
    ④瀏覽器運行Applet。

本系統Java Applet實(shí)現三個(gè)功能:視頻數據通過(guò)Socket傳送到客戶(hù)端顯示;將客戶(hù)端調節視頻帶參數發(fā)送到服務(wù)器;將客戶(hù)端點(diǎn)擊的運動(dòng)控制參數發(fā)送到服務(wù)器。其中init和start函數在A(yíng)pplet開(kāi)始執行時(shí)調用,通過(guò)start創(chuàng )建2個(gè)線(xiàn)程:用于socket通信;提供用戶(hù)界面顯示視頻和相應用戶(hù)操作。用戶(hù)界面設計用到Sun的SwingWorker類(lèi)庫。

(2)雙緩沖技術(shù)

雙緩沖技術(shù)主要應用于屏幕閃爍現象的消除。在一幀圖像的繪制過(guò)程中,如果一幀圖像的繪制時(shí)間大于屏幕的刷新時(shí)間,就會(huì )造成視覺(jué)上不連貫的效果。繪制時(shí)可在內存中建立兩個(gè)圖形緩沖區,其中一個(gè)緩沖區(前臺)用于存放顯示的當前幀,并在屏幕上顯示;同時(shí)在另一個(gè)緩沖區中完成下一幀的繪制。因為畫(huà)面的繪制過(guò)程是在用戶(hù)不可見(jiàn)的情況下進(jìn)行,自然也就消除了這種閃爍現象。

為了保證用戶(hù)的觀(guān)看質(zhì)量,本系統在動(dòng)態(tài)網(wǎng)頁(yè)的設計中引入這種雙緩沖技術(shù)。采用Java語(yǔ)言中component類(lèi)的一個(gè)可用于創(chuàng )建圖形緩沖區的方法 createImage(int width,int height),其參數為繪制區域的大小。該方法返回一個(gè)大小為繪制區域的Image對象。調用該對象的getGraphics()方法得到一個(gè) GraphiCS對象,將它視為后臺的Graphics對象。此后,可調用Graplaics類(lèi)的各種繪圖方法,以繪制所需的畫(huà)面。此時(shí),所有的操作都是在后臺的Image對象中進(jìn)行的,并沒(méi)有顯示到屏幕上。當繪制完成后,再調用前臺Graphics對象的drawlmage(Image img,int x,int y,ImageObserver observer)方法將已準備好的Image顯示到屏幕上。其中Image參數就是createImage方法所返回后臺的Image對象,ImageObserver參數是與前臺Graphics對象相關(guān)的Component對象或其派生類(lèi)對象。

4 系統測試

在PXA270上搭建Boa,將Java Applet小程序編譯后生成的.class執行文件、HTML腳本index.html及相關(guān)文件拷貝到/var/www/下。將編譯好的流媒體服務(wù)器的二進(jìn)制文件下載到PXA270上。加載攝像頭和USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng),運行boa,再運行流媒體服務(wù)器。在PC端打開(kāi)瀏覽器輸入pxa270的IP地址,就可以看到網(wǎng)頁(yè)監控的畫(huà)面,畫(huà)面清晰且視頻流暢,如圖4所示。



5 結 語(yǔ)

本文充分利用多媒體技術(shù)和嵌入式技術(shù)各自的特點(diǎn),介紹了一種用ARM實(shí)現移動(dòng)視頻監控的方法,給出了軟硬件設計結構及USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng)的具體實(shí)現過(guò)程。設計了流媒體服務(wù)器,搭建了Boa作為Web服務(wù)器及實(shí)現了動(dòng)態(tài)網(wǎng)頁(yè)。利用USB無(wú)線(xiàn)網(wǎng)卡免去了布線(xiàn)的煩惱;利用B/S結構使得可以通過(guò)瀏覽器來(lái)監控,實(shí)現跨平臺監視;利用雙緩沖技術(shù),實(shí)現較高的視頻質(zhì)量;贏(yíng)RM的移動(dòng)視頻監控系統使得操作簡(jiǎn)單,攜帶方便,可靠性高,成本低,具有良好的開(kāi)發(fā)及應用前景。

作者:黃倩,閔華松 武漢科技大學(xué)
來(lái)源:現代電子技術(shù) 2010年第33卷第01期
本文地址:http://selenalain.com/thread-9840-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页