《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Android的視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于Android的視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第7期
李 昂, 宋海聲, 蘇小蕓
西北師范大學(xué) 物理與電子工程學(xué)院,甘肅 蘭州730070
摘要: 提出了一種基于Android平臺的視頻監(jiān)控系統(tǒng)方法。闡述了系統(tǒng)的結(jié)構(gòu)框架,介紹了Android操作系統(tǒng)及其應(yīng)用層的開發(fā),重點(diǎn)描述了PDA端視頻處理的實(shí)現(xiàn)。系統(tǒng)采用Blackfin533芯片實(shí)現(xiàn)對視頻的H.264編碼,并應(yīng)用快速模式選擇算法優(yōu)化編碼過程,可使通信模塊和數(shù)據(jù)處理模塊通過Android平臺代碼完成。在3G無線網(wǎng)絡(luò)環(huán)境下,實(shí)現(xiàn)了后臺對遠(yuǎn)端的實(shí)時視頻監(jiān)控。測試表明,延遲可控制在5 s以內(nèi)。
中圖分類號: TP39
文獻(xiàn)標(biāo)識碼: 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)正朝著數(shù)字化、網(wǎng)絡(luò)化、功能綜合化的方向不斷發(fā)展。傳統(tǒng)的視頻監(jiān)控系統(tǒng)大多通過線纜或光纖將視頻信號傳輸?shù)奖O(jiān)控中心,但由于網(wǎng)線的限制,不利于監(jiān)控系統(tǒng)的迅速搭建。隨著無線網(wǎng)絡(luò)特別是3G網(wǎng)絡(luò)的普及,視頻監(jiān)控系統(tǒng)面臨著更加廣闊和自由的空間[1]。

    3G網(wǎng)絡(luò)在移動環(huán)境下支持的帶寬有限,而視頻監(jiān)控系統(tǒng)的實(shí)時性要求盡可能清晰流暢地傳輸視頻信號,因此需要在保證視頻信號不失真的情況下,進(jìn)行最大可能的壓縮。H.264標(biāo)準(zhǔn)采用了高精度、多模式預(yù)測技術(shù)提高壓縮比以降低碼流[2],可廣泛應(yīng)用于遠(yuǎn)程監(jiān)控、電視會議以及可視電話等領(lǐng)域。
    本文介紹了一種基于Android系統(tǒng)的視頻監(jiān)控系統(tǒng),利用PDA結(jié)合H.264編碼技術(shù)和3G無線網(wǎng)絡(luò)通信技術(shù)實(shí)現(xiàn)了對遠(yuǎn)程視頻的實(shí)時監(jiān)控。
1 系統(tǒng)概述
    如圖1所示,系統(tǒng)采用C/S架構(gòu),硬件部分包括帶攝像頭的PDA、H.264編碼器和后臺監(jiān)控計(jì)算機(jī)。系統(tǒng)的關(guān)鍵技術(shù)是編碼器的設(shè)計(jì),將拍攝到的模擬信號轉(zhuǎn)換成數(shù)字信號,通過H.264編碼器進(jìn)行編碼壓縮,最后利用3G無線網(wǎng)絡(luò)將壓縮后的數(shù)據(jù)傳送到后臺監(jiān)控計(jì)算機(jī)完成實(shí)時顯示。后臺計(jì)算機(jī)還可以通過3G網(wǎng)絡(luò)向PDA發(fā)送控制命令,實(shí)現(xiàn)云臺控制等相關(guān)操作。本文主要介紹PDA端的設(shè)計(jì)與實(shí)現(xiàn)。

2 Android操作系統(tǒng)
    Android是一種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要用于便攜設(shè)備。Android擁有一個提供Java編程語言功能的核心庫。每個Java編寫的應(yīng)用程序都擁有一個獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個可以同時高效運(yùn)行多個虛擬系統(tǒng)的設(shè)備,這樣的特點(diǎn)使得Android系統(tǒng)能夠很好地適應(yīng)手機(jī)特殊的運(yùn)行環(huán)境。通過在Eclipse上安裝Android SDK插件,可以輕松搭建Android開發(fā)平臺,在該平臺編譯的代碼可自動生成APK文件,直接進(jìn)行安裝使用[3]。
3 PDA端視頻處理的實(shí)現(xiàn)
    基于Android的視頻監(jiān)控系統(tǒng)最重要的部分就是PDA以及外設(shè)的設(shè)計(jì)和視頻的處理。PDA有限的內(nèi)存要求這部分的實(shí)現(xiàn)盡量做到低功耗、高性能,達(dá)到算法和軟件的最優(yōu)化。
    由于DSP芯片具有極強(qiáng)的可編程性,方便后期進(jìn)行編碼的比較和優(yōu)化。因此編碼器采用ADI公司推出的DSP芯片Blackfin533。該芯片集成了大量的外設(shè)和存儲器接口,在結(jié)構(gòu)上對C/C++進(jìn)行了優(yōu)化,能夠達(dá)到很高的代碼密度,可以滿足H.264編碼的實(shí)時要求。
3.1 H.264算法的優(yōu)化選擇
    與以往的視頻編碼標(biāo)準(zhǔn)(如H.263和Mpeg系列)只采用一種或兩種宏塊編碼模式不同,H.264采用從16×16到4×4的七種宏塊編碼模式,使得H.264相比H.263節(jié)省了大約50%的碼率。但同時面臨著可觀的運(yùn)算量消耗[4]。為了達(dá)到實(shí)時編碼,如何實(shí)現(xiàn)快速的模式選擇算法成為解決問題的關(guān)鍵[5-6]。H.264/AVC的宏塊編碼模式大量應(yīng)用了遍歷,使得運(yùn)算量過大,適當(dāng)?shù)販p少遍歷的模式或者提前終止遍歷就可以提高編碼的速度[7]。而減少無效遍歷的關(guān)鍵在于限制遍歷的范圍和制定可靠的終止準(zhǔn)則。
     Curr為當(dāng)前待編碼的宏塊,A、B、C、D分別為四個方向的相鄰宏塊,A_cost、B_cost、C_cost和D_cost分別為A、B、C、D的編碼代價,門限T利用式(1)計(jì)算得出:
    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)化算法的處理,視頻在保真的情況下,有效地降低了壓縮比,提高了算法的運(yùn)算速度。

3.2 軟件的設(shè)計(jì)
    Android平臺實(shí)現(xiàn)主要包括通信模塊和數(shù)據(jù)處理模塊。
    通信模塊采用了Socket網(wǎng)絡(luò)通信技術(shù)進(jìn)行UDB通信。通信之前的準(zhǔn)備工作是完成Socket的創(chuàng)建,同時綁定Socket和端口號,設(shè)置開始監(jiān)聽端口。監(jiān)聽開始后,主程序循環(huán)監(jiān)聽、接收請求信號,同時創(chuàng)建新的客戶連接Socket以及相應(yīng)的通信進(jìn)程。
    數(shù)據(jù)處理模塊主要是對視頻流數(shù)據(jù)的提取和傳導(dǎo)。開啟攝像頭后,在視頻預(yù)覽時截取視頻流每一幀的數(shù)據(jù)。把截取到的數(shù)據(jù)傳輸?shù)綉?yīng)用層進(jìn)行圖像繪制,通過外設(shè)傳輸?shù)紻SP芯片進(jìn)行視頻編碼,編碼后將數(shù)據(jù)通過網(wǎng)絡(luò)傳送到后臺監(jiān)控室。Android應(yīng)用層[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中的視頻數(shù)據(jù)
     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 
                     //用來調(diào)用每幀圖像數(shù)據(jù)data的接口
    DSP芯片中軟件設(shè)計(jì)的主要目的是提高運(yùn)算速度和效率。宏塊編碼采用不同位置獨(dú)立編碼,編程時盡可能地將判斷轉(zhuǎn)移到循環(huán)外,杜絕了大量幀內(nèi)和幀間宏塊的重復(fù)判斷。利用快速的模式選擇算法對宏塊進(jìn)行編碼,進(jìn)一步提高了編碼效率。使用Blackfin533芯片專用的視頻指令SAA求取絕對差值求和函數(shù)SAD(),在很大程度上提高了運(yùn)算速度。具體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 實(shí)現(xiàn)結(jié)果
    圖3為系統(tǒng)在HTC G14手機(jī)和后臺計(jì)算機(jī)中利用聯(lián)通3G網(wǎng)絡(luò)實(shí)驗(yàn)的結(jié)果。手機(jī)拍攝預(yù)覽的視頻顯示在計(jì)算機(jī)上;后臺可選擇監(jiān)視某一臺手機(jī)的視野,還可以通過發(fā)送命令放大或縮小視野的范圍,整個過程不受距離限制。經(jīng)過多次測試,PDA端與后臺在同一幀的顯示僅存在3 s~5 s的延遲。

 

 

    目前,基于Android的視頻監(jiān)控系統(tǒng)已在實(shí)驗(yàn)室測試使用,基本完成了后臺計(jì)算機(jī)對PDA端攝像頭視野的實(shí)時監(jiān)控功能。系統(tǒng)利用了3G網(wǎng)絡(luò)數(shù)據(jù)高傳輸速度中和Android系統(tǒng)開發(fā)便利的優(yōu)勢,優(yōu)化了H.264編碼方法和軟件編程。整個系統(tǒng)從軟件到硬件,開發(fā)成本低,實(shí)際使用方便。隨著網(wǎng)絡(luò)技術(shù)和視頻編碼技術(shù)的不斷發(fā)展,移動視頻監(jiān)控有望在未來成為監(jiān)控系統(tǒng)的主流發(fā)展方向。

參考文獻(xiàn)
[1] 曹曉芳,王超,李杰.一種基于Android智能手機(jī)的遠(yuǎn)程視頻監(jiān)控的設(shè)計(jì)[J].電子器件,2011,34(6):709-712.
[2] 李文新,李宇光,胡延蘇,等.嵌入式無線局域網(wǎng)中H.264視頻傳輸?shù)腝oS研究[J].計(jì)算機(jī)科學(xué),2011,38(5):83-85.
[3] 耿東久,索岳,陳渝,等.基于Android手機(jī)的遠(yuǎn)程訪問和控制系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2011,31(2):559-561.
[4] 西剎子.安防天下&mdash;&mdash;智能網(wǎng)絡(luò)視頻監(jiān)控技術(shù)詳解與實(shí)踐[M].北京:清華大學(xué)出版社,2010.
[5] 閆健恩,許海燕,林建秋.基于ADSP-Blackfin533的H.264視頻編碼器的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006(5):27-29.
[6] 顧梅花,余寧梅,寇立康,等.H.264快速模式選擇算法中的提前終止策略[J].中國圖像圖形學(xué)報,2011,16(3):305-309.
[7] 盧光輝.P幀快速模式選擇算法[J].電子科技大學(xué)學(xué)報,2010,39(3):397-401.
[8] 韓超,梁泉.Android系統(tǒng)原理及開發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2010.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。