基于Android的3G手機網(wǎng)絡攝像機客戶端軟件設計
攝像機硬件核心采用三星公司推出的基于ARM9架構的S3C2440A芯片,該處理器主頻達到400 MHz可以滿足實時壓縮,MJPEG視頻流可以達到320×240分辨率25 fps的性能要求。外圍搭配64 MB SDRAM、256 MBNAND Flash,網(wǎng)絡功能由DM9000以太網(wǎng)MAC控制芯片負責,攝像頭模塊由USB控制器控制,系統(tǒng)供電由3片LM71117組成,分別輸出3.3 V、1.8 V、1.25 V電壓,輔助外圍接口構成攝像機硬件結構。S3C2440A系統(tǒng)硬件框圖如圖1所示。
網(wǎng)絡攝像機是互聯(lián)網(wǎng)上的TCP/IP設備,系統(tǒng)網(wǎng)絡拓撲圖如圖2所示。其中在家庭區(qū)域內根據(jù)安防的特點在大門走廊、客廳內、陽臺區(qū)域分別布置攝像機,再由網(wǎng)線連接到路由器,配置路由器參數(shù)映射每個攝像機獨立端口與IP地址,即完成Internet接入。遠端由固定位置的PC機,移動位置的3G筆記本和隨身攜帶的3G Android手機組成,PC機可以通過WEB瀏覽器訪問與控制網(wǎng)絡攝像機,Android手機通過客戶端實現(xiàn)實時訪問。
2 系統(tǒng)軟件設計
2.1 網(wǎng)絡攝像機軟件設計
搭建攝像機需要Linux系統(tǒng)環(huán)境,首先移植Bootloader,對Linux 2.6.32內核進行裁剪,加載Linux UVC(USB video device class)驅動及相關驅動,將編譯好的Linux系統(tǒng)鏡像燒寫到ARM板Nand Flash中,對Bootloader沒置啟動引導地址,即完成軟件運行環(huán)境搭建。
分析網(wǎng)絡攝像機性能需求與拓展性,須滿足下列條件:
◆視頻監(jiān)控實時性;
◆支持多客戶端同時連接;
◆圖像識別算法或預留接口;
◆功能模塊化滿足后期開發(fā)可擴展。
因此,采用多線程架構與互斥鎖機制來保證實時性、模塊化的思想設計代碼結構。軟件程序主流程如圖3所示。
其中主要實現(xiàn)如下功能。
①初始化Linux V4L2接口,必須按照V4L2標準結構初始化結構體,其中包括struct v412_capability cap;struct v412_format fmt;struct v412_buffer buf;struct v412_requestbuffers rb;struct v412_streamparm setfps。此外將視頻設備名、視頻寬度、視頻高度、幀率、視頻格式和抓取方法傳遞給函數(shù)init_videoIn(struct vdIn*vd,char*device,int width,intheight,int fps,int format,int grabmethod)實現(xiàn)初始化。值得注意的是眾多USB camera并不支持JPEG格式視頻流直接抓取,針對YUYV格式抓取卻有廣泛支持。后期進行圖像識別算法操作時直接分析YUYV原始圖像數(shù)據(jù),將節(jié)省JPEG壓縮數(shù)據(jù)轉換為原始圖像數(shù)據(jù)的大量運算開銷,因此采用YUYV抓取模式。
評論