《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Android的視頻監(jiān)控系統(tǒng)設計與實現
基于Android的視頻監(jiān)控系統(tǒng)設計與實現
來源:電子技術應用2012年第7期
李 昂, 宋海聲, 蘇小蕓
西北師范大學 物理與電子工程學院,甘肅 蘭州730070
摘要: 提出了一種基于Android平臺的視頻監(jiān)控系統(tǒng)方法。闡述了系統(tǒng)的結構框架,介紹了Android操作系統(tǒng)及其應用層的開發(fā),重點描述了PDA端視頻處理的實現。系統(tǒng)采用Blackfin533芯片實現對視頻的H.264編碼,并應用快速模式選擇算法優(yōu)化編碼過程,可使通信模塊和數據處理模塊通過Android平臺代碼完成。在3G無線網絡環(huán)境下,實現了后臺對遠端的實時視頻監(jiān)控。測試表明,延遲可控制在5 s以內。
中圖分類號: TP39
文獻標識碼: A
文章編號: 0258-7998(2012)07-0138-02
Design and implementation of video monitoring system based on Android
Li Ang, Song Haisheng, Su Xiaoyun
College of Physics and Electronic Engineering, Northwest Normal University, Lanzhou 730070,China
Abstract: An idea and program of video monitoring system based on Android is presented.This paper introduces the system architecture and Android operating system and development of application layer.It emphatically discusses the ideas and methods of PDA video processing.It uses Blackfin533 for H.264 data decoding and fast mode selection algorithm for optimal coding, The communication module and data processing module are realized through the Android platform code. It achieves the remote real-time video surveillance from backstage in 3G wireless networks.Through testing, the delay is controlled in less than 5 seconds.
Key words : Android; H.264 decoding;fast mode selection algorithm

    目前視頻監(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] 西剎子.安防天下&mdash;&mdash;智能網絡視頻監(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.

此內容為AET網站原創(chuàng),未經授權禁止轉載。