文獻標識碼: A
文章編號: 0258-7998(2012)07-0138-02
目前視頻監(jiān)控系統(tǒng)正朝著數字化、網絡化、功能綜合化的方向不斷發(fā)展。傳統(tǒng)的視頻監(jiān)控系統(tǒng)大多通過線纜或光纖將視頻信號傳輸到監(jiān)控中心,但由于網線的限制,不利于監(jiān)控系統(tǒng)的迅速搭建。隨著無線網絡特別是3G網絡的普及,視頻監(jiān)控系統(tǒng)面臨著更加廣闊和自由的空間[1]。
3G網絡在移動環(huán)境下支持的帶寬有限,而視頻監(jiān)控系統(tǒng)的實時性要求盡可能清晰流暢地傳輸視頻信號,因此需要在保證視頻信號不失真的情況下,進行最大可能的壓縮。H.264標準采用了高精度、多模式預測技術提高壓縮比以降低碼流[2],可廣泛應用于遠程監(jiān)控、電視會議以及可視電話等領域。
本文介紹了一種基于Android系統(tǒng)的視頻監(jiān)控系統(tǒng),利用PDA結合H.264編碼技術和3G無線網絡通信技術實現了對遠程視頻的實時監(jiān)控。
1 系統(tǒng)概述
如圖1所示,系統(tǒng)采用C/S架構,硬件部分包括帶攝像頭的PDA、H.264編碼器和后臺監(jiān)控計算機。系統(tǒng)的關鍵技術是編碼器的設計,將拍攝到的模擬信號轉換成數字信號,通過H.264編碼器進行編碼壓縮,最后利用3G無線網絡將壓縮后的數據傳送到后臺監(jiān)控計算機完成實時顯示。后臺計算機還可以通過3G網絡向PDA發(fā)送控制命令,實現云臺控制等相關操作。本文主要介紹PDA端的設計與實現。
2 Android操作系統(tǒng)
Android是一種以Linux為基礎的開放源碼操作系統(tǒng),主要用于便攜設備。Android擁有一個提供Java編程語言功能的核心庫。每個Java編寫的應用程序都擁有一個獨立的Dalvik虛擬機實例。Dalvik被設計成一個可以同時高效運行多個虛擬系統(tǒng)的設備,這樣的特點使得Android系統(tǒng)能夠很好地適應手機特殊的運行環(huán)境。通過在Eclipse上安裝Android SDK插件,可以輕松搭建Android開發(fā)平臺,在該平臺編譯的代碼可自動生成APK文件,直接進行安裝使用[3]。
3 PDA端視頻處理的實現
基于Android的視頻監(jiān)控系統(tǒng)最重要的部分就是PDA以及外設的設計和視頻的處理。PDA有限的內存要求這部分的實現盡量做到低功耗、高性能,達到算法和軟件的最優(yōu)化。
由于DSP芯片具有極強的可編程性,方便后期進行編碼的比較和優(yōu)化。因此編碼器采用ADI公司推出的DSP芯片Blackfin533。該芯片集成了大量的外設和存儲器接口,在結構上對C/C++進行了優(yōu)化,能夠達到很高的代碼密度,可以滿足H.264編碼的實時要求。
3.1 H.264算法的優(yōu)化選擇
與以往的視頻編碼標準(如H.263和Mpeg系列)只采用一種或兩種宏塊編碼模式不同,H.264采用從16×16到4×4的七種宏塊編碼模式,使得H.264相比H.263節(jié)省了大約50%的碼率。但同時面臨著可觀的運算量消耗[4]。為了達到實時編碼,如何實現快速的模式選擇算法成為解決問題的關鍵[5-6]。H.264/AVC的宏塊編碼模式大量應用了遍歷,使得運算量過大,適當地減少遍歷的模式或者提前終止遍歷就可以提高編碼的速度[7]。而減少無效遍歷的關鍵在于限制遍歷的范圍和制定可靠的終止準則。
Curr為當前待編碼的宏塊,A、B、C、D分別為四個方向的相鄰宏塊,A_cost、B_cost、C_cost和D_cost分別為A、B、C、D的編碼代價,門限T利用式(1)計算得出:
T=(5×A_cost+5×B_cost+4×C_cost+2×A_cost)>>4 (1)
Curr分別按照4個相鄰宏塊和自身宏塊的模式編碼,比較其代價值得到最優(yōu)編碼。圖2所示為對宏塊A和B的優(yōu)化編碼流程圖(對宏塊C和D的編碼類似)。通過測試比較及優(yōu)化算法的處理,視頻在保真的情況下,有效地降低了壓縮比,提高了算法的運算速度。
3.2 軟件的設計
Android平臺實現主要包括通信模塊和數據處理模塊。
通信模塊采用了Socket網絡通信技術進行UDB通信。通信之前的準備工作是完成Socket的創(chuàng)建,同時綁定Socket和端口號,設置開始監(jiān)聽端口。監(jiān)聽開始后,主程序循環(huán)監(jiān)聽、接收請求信號,同時創(chuàng)建新的客戶連接Socket以及相應的通信進程。
數據處理模塊主要是對視頻流數據的提取和傳導。開啟攝像頭后,在視頻預覽時截取視頻流每一幀的數據。把截取到的數據傳輸到應用層進行圖像繪制,通過外設傳輸到DSP芯片進行視頻編碼,編碼后將數據通過網絡傳送到后臺監(jiān)控室。Android應用層[8]的核心代碼如下:
p0=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
// 創(chuàng)建socket
bind(p0,(struct sockaddr *)&(addr_org),sizeof(struct sock-
addr_in)); // 綁定IP和端口
sendto(p0, SendDataBuff, ulLen, 0, (struct sockaddr *)&
(addr_dst), sizeof(sockaddr_in));
// 向指定IP發(fā)送SendDataBuff中的視頻數據
public ImageSurfaceView(Context context, AttributeSet attrs)
{paint = new Paint(); paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
…… setFocusable(true);} //初始化SurfaceView類
public void surfaceCreated(SurfaceHolder holder) {……
screenH = this.getHeight();screenW = this.getWidth
();handler.post(imageRunnable);}
//創(chuàng)建SurfaceView用于顯示捕捉的圖像
Camera openCamera() {} //打開攝像頭
android.hardware.camera.PreviewCallback
//用來調用每幀圖像數據data的接口
DSP芯片中軟件設計的主要目的是提高運算速度和效率。宏塊編碼采用不同位置獨立編碼,編程時盡可能地將判斷轉移到循環(huán)外,杜絕了大量幀內和幀間宏塊的重復判斷。利用快速的模式選擇算法對宏塊進行編碼,進一步提高了編碼效率。使用Blackfin533芯片專用的視頻指令SAA求取絕對差值求和函數SAD(),在很大程度上提高了運算速度。具體SAA的使用代碼如下:
for(i=0;i<16*16;i++)
sad+=abs( *pSrc++ - *pRef++);
LSETUP(sad_START,sad_END) LC0=P1;
sad_START:
r3 = [i1++];
SAA(r1:0,r3:2) || r1= [i0++] || r2= [i1++];
SAA(r1:0,r3:2)(R) || r0= [i0++] || r3= [i1++];
SAA(r1:0,r3:2) || r1= [i0++] || r2= [i1++];
sad_END:SAA(r1:0,r3:2)(R) || r0=[i0++] || r2=
[i1++]
4 實現結果
圖3為系統(tǒng)在HTC G14手機和后臺計算機中利用聯通3G網絡實驗的結果。手機拍攝預覽的視頻顯示在計算機上;后臺可選擇監(jiān)視某一臺手機的視野,還可以通過發(fā)送命令放大或縮小視野的范圍,整個過程不受距離限制。經過多次測試,PDA端與后臺在同一幀的顯示僅存在3 s~5 s的延遲。
目前,基于Android的視頻監(jiān)控系統(tǒng)已在實驗室測試使用,基本完成了后臺計算機對PDA端攝像頭視野的實時監(jiān)控功能。系統(tǒng)利用了3G網絡數據高傳輸速度中和Android系統(tǒng)開發(fā)便利的優(yōu)勢,優(yōu)化了H.264編碼方法和軟件編程。整個系統(tǒng)從軟件到硬件,開發(fā)成本低,實際使用方便。隨著網絡技術和視頻編碼技術的不斷發(fā)展,移動視頻監(jiān)控有望在未來成為監(jiān)控系統(tǒng)的主流發(fā)展方向。
參考文獻
[1] 曹曉芳,王超,李杰.一種基于Android智能手機的遠程視頻監(jiān)控的設計[J].電子器件,2011,34(6):709-712.
[2] 李文新,李宇光,胡延蘇,等.嵌入式無線局域網中H.264視頻傳輸的QoS研究[J].計算機科學,2011,38(5):83-85.
[3] 耿東久,索岳,陳渝,等.基于Android手機的遠程訪問和控制系統(tǒng)[J].計算機應用,2011,31(2):559-561.
[4] 西剎子.安防天下——智能網絡視頻監(jiān)控技術詳解與實踐[M].北京:清華大學出版社,2010.
[5] 閆健恩,許海燕,林建秋.基于ADSP-Blackfin533的H.264視頻編碼器的實現[J].微計算機信息,2006(5):27-29.
[6] 顧梅花,余寧梅,寇立康,等.H.264快速模式選擇算法中的提前終止策略[J].中國圖像圖形學報,2011,16(3):305-309.
[7] 盧光輝.P幀快速模式選擇算法[J].電子科技大學學報,2010,39(3):397-401.
[8] 韓超,梁泉.Android系統(tǒng)原理及開發(fā)要點詳解[M].北京:電子工業(yè)出版社,2010.