基于嵌入式ARM的移動視頻監控系統設計

(2)傳輸視頻數據
本系統通過網絡傳輸視頻數據,用套接字(Socket)編程實現。

(3)采集線程與傳輸線程同步
流媒體服務器的設計有個關鍵點:保證連續不斷的視頻流。針對這一點,本系統采用多線程編程,采集和傳輸并行執行。用互斥量和標志位來實現采集線程和傳輸線程的同步。
采集數據時給互斥量加鎖,直到當前幀采集完并填充完當前幀頭結構體才解鎖互斥量,再開始傳輸。同理,傳輸當前幀時采集線程等待,直到當前幀傳輸完。采集完兩幀數據傳輸第二幀。傳輸完成后,采集完第三幀傳輸第三幀。依此循環,采集完第N幀傳輸第N幀。此時實際只傳輸了第2幀到第N幀,即N-1幀。
用戶的視覺反應需要時間,此丟棄第一幀的設計思想并不會使畫面失真。反而連續不斷的視頻流傳輸到客戶端為用戶能夠獲得良好的視頻質量打下了基礎。
采集線程:

3.2.2 動態網頁的設計
嵌入式Web服務器是Web服務器簡化后的專用系統。本系統選用適合嵌入式系統的Boa Web服務器。Boa是一個單任務的HTTP服務器,支持能夠實現動態Web技術的Java Script技術,源代碼開放,性能高。同時服務器本身所占空間很小,因而十分適用于嵌入式系統。
鑒于Boa移植技術已經很成熟,故不詳細討論。
Applet是能夠嵌入到一個HTML頁面中,且可通過Web瀏覽器下載和執行的一種Java類。它是Java技術容器(container) 的一種特定類型。Applet可以通過網絡傳輸,由瀏覽器自動裝載并執行。這恰恰非常符合本系統的要求,因此選用Applet來很好地實現動態網頁,打開網頁就可以看到視頻數據,方便快捷。
(1)設計流程
Applet不能單獨運行,需要嵌入在網頁中借助瀏覽器的解釋。必須要創建一個HTML文件來告訴瀏覽器需裝載什么以及如何運行它。其執行順序如下:
?、贋g覽器裝入URL;
?、跒g覽器裝入HTML文檔;
?、蹫g覽器裝入Applet類;
④瀏覽器運行Applet。
本系統Java Applet實現三個功能:視頻數據通過Socket傳送到客戶端顯示;將客戶端調節視頻帶參數發送到服務器;將客戶端點擊的運動控制參數發送到服務器。其中init和start函數在Applet開始執行時調用,通過start創建2個線程:用于socket通信;提供用戶界面顯示視頻和相應用戶操作。用戶界面設計用到Sun的SwingWorker類庫。
(2)雙緩沖技術
雙緩沖技術主要應用于屏幕閃爍現象的消除。在一幀圖像的繪制過程中,如果一幀圖像的繪制時間大于屏幕的刷新時間,就會造成視覺上不連貫的效果。繪制時可在內存中建立兩個圖形緩沖區,其中一個緩沖區(前臺)用于存放顯示的當前幀,并在屏幕上顯示;同時在另一個緩沖區中完成下一幀的繪制。因為畫面的繪制過程是在用戶不可見的情況下進行,自然也就消除了這種閃爍現象。
為了保證用戶的觀看質量,本系統在動態網頁的設計中引入這種雙緩沖技術。采用Java語言中component類的一個可用于創建圖形緩沖區的方法createImage(int width,int height),其參數為繪制區域的大小。該方法返回一個大小為繪制區域的Image對象。調用該對象的getGraphics()方法得到一個 GraphiCS對象,將它視為后臺的Graphics對象。此后,可調用Graplaics類的各種繪圖方法,以繪制所需的畫面。此時,所有的操作都是在后臺的Image對象中進行的,并沒有顯示到屏幕上。當繪制完成后,再調用前臺Graphics對象的drawlmage(Image img,int x,int y,ImageObserver observer)方法將已準備好的Image顯示到屏幕上。其中Image參數就是createImage方法所返回后臺的Image對象,ImageObserver參數是與前臺Graphics對象相關的Component對象或其派生類對象。
4 系統測試
在PXA270上搭建Boa,將Java Applet小程序編譯后生成的.class執行文件、HTML腳本index.html及相關文件拷貝到/var/www/下。將編譯好的流媒體服務器的二進制文件下載到PXA270上。加載攝像頭和USB無線網卡驅動,運行boa,再運行流媒體服務器。在PC端打開瀏覽器輸入pxa270的IP地址,就可以看到網頁監控的畫面,畫面清晰且視頻流暢,如圖4所示。

5 結 語
本文充分利用多媒體技術和嵌入式技術各自的特點,介紹了一種用ARM實現移動視頻監控的方法,給出了軟硬件設計結構及USB無線網卡驅動的具體實現過程。設計了流媒體服務器,搭建了Boa作為Web服務器及實現了動態網頁。利用USB無線網卡免去了布線的煩惱;利用B/S結構使得可以通過瀏覽器來監控,實現跨平臺監視;利用雙緩沖技術,實現較高的視頻質量。基于ARM的移動視頻監控系統使得操作簡單,攜帶方便,可靠性高,成本低,具有良好的開發及應用前景。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
linux相關文章:linux教程
攝像頭相關文章:攝像頭原理
評論