《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于ARM的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于ARM的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
OFweek電子工程網(wǎng)
摘要: 提出一種基于ARM嵌入式開發(fā)平臺(tái)視頻監(jiān)控的實(shí)現(xiàn)方案,。通過(guò)V4L2在Linux下構(gòu)建視頻圖像采集和顯示,然后使用servfox和spcaview構(gòu)建視頻服務(wù)器,,系統(tǒng)可在Linux和Windows操作系統(tǒng)下通過(guò)窗口或者網(wǎng)頁(yè)進(jìn)行視頻監(jiān)控和圖像抓拍,。
Abstract:
Key words :

  摘要: 提出一種基于ARM 嵌入式開發(fā)平臺(tái)視頻監(jiān)控的實(shí)現(xiàn)方案。通過(guò)V4L2 在Linux 下構(gòu)建視頻圖像采集和顯示,然后使用servfox 和spcaview 構(gòu)建視頻服務(wù)器,,系統(tǒng)可在Linux 和Windows 操作系統(tǒng)下通過(guò)窗口或者網(wǎng)頁(yè)進(jìn)行視頻監(jiān)控和圖像抓拍,。測(cè)試表明系統(tǒng)的監(jiān)控圖像清晰,并具有體積小,、成本低,、可靠性強(qiáng)等優(yōu)點(diǎn)。

  目前,,嵌入式系統(tǒng)在視頻監(jiān)控中的應(yīng)用越來(lái)越廣泛,。伴隨著網(wǎng)絡(luò)的強(qiáng)大功能,視頻監(jiān)控更側(cè)重網(wǎng)絡(luò)監(jiān)控方案,,要求體積小,、遠(yuǎn)程化、成本低,、功耗小,、操作界面人性化等。本系統(tǒng)基于嵌入式Linux 平臺(tái)上利用USB 攝像頭采集視頻圖像,,通過(guò)視頻圖像壓縮及結(jié)合網(wǎng)絡(luò)進(jìn)行視頻圖像傳輸,,使遠(yuǎn)程監(jiān)控成為可能。

  1 系統(tǒng)概述

  視頻圖像監(jiān)控系統(tǒng)由4 部分組成,, 分別為視頻圖像采集,、視頻圖像處理、視頻圖像傳輸,、視頻圖像顯示,。視頻圖像采集部分由數(shù)字?jǐn)z像頭、USB 通道和嵌入式處理器構(gòu)成,、視頻圖像處理主要是視頻圖像壓縮,,由算法實(shí)現(xiàn)、視頻圖像傳輸主要利用視頻服務(wù)器來(lái)實(shí)現(xiàn),、視頻圖像顯示主要是在遠(yuǎn)程的主機(jī)上實(shí)現(xiàn)視頻圖像的瀏覽,、保存和處理等,Linux 主機(jī)上由應(yīng)用程序?qū)崿F(xiàn),,Windows 主機(jī)上通過(guò)瀏覽器上的JAVA 程序?qū)崿F(xiàn),。系統(tǒng)原理框圖如圖1 所示。

 

  圖1 系統(tǒng)框圖

  圖1 系統(tǒng)框圖

 

  2 系統(tǒng)硬件

  CPU 處理器使用Samsung S3C2440A,, 主頻400 MHz,,最高533 MHz;64 M SDRAM、32 bit 數(shù)據(jù)總線,、SDRAM 時(shí)鐘頻率100 MHz;256 M/1 GB Nand Flash,, 掉電非易失,、2 M NorFlash,掉電非易失,;統(tǒng)寶3.5 真彩LCD,,屏集成4 線電阻式觸摸屏, 屏幕分辨率可以達(dá)到1024×768 象素,;100 M 以太網(wǎng)RJ-45 接口(采用DM9000 網(wǎng)絡(luò)芯片),、串行口、USB Host,、USB Slave B 型接口,、SD 卡存儲(chǔ)接口、路立體聲音頻輸出接口,, 麥克風(fēng)接口,、JTAG 接口、4 USER Leds,、6 USER buttONs(帶引出座),、I2C 總線AT24C08 芯片,、20 pin 攝像頭接口,;攝像頭用良田,兼容SN9C20X 系列芯片的驅(qū)動(dòng),,本系統(tǒng)的內(nèi)核中集成了該驅(qū)動(dòng),。

  3 系統(tǒng)軟件

  3.1 Linux 內(nèi)核的移植

  移植新內(nèi)核主要是為了給LCD 以及攝像頭添加相應(yīng)的驅(qū)動(dòng)支持,在Fedora 9 中打開內(nèi)核的目錄,,使用缺省配置文件進(jìn)行配置:在內(nèi)核中添加V4L 支持,、添加萬(wàn)能USB 攝像頭驅(qū)動(dòng)GSPCA。

  3.2 基于V4L2 的圖像采集程序

  系統(tǒng)使用的交叉編譯工具為arm-linux-gcc-4.3.2.設(shè)計(jì)使用到的應(yīng)用程序都要通過(guò)該編譯器編譯后下載到開發(fā)板上運(yùn)行,。將編好的應(yīng)用程序V4L2.c 交叉編譯后下載到板,。

  V4L(Video for Linux)是Linux 下提供的一個(gè)音視頻接口規(guī)范,所有的音視頻驅(qū)動(dòng)編寫都要用到這些接口,。

  V4L 從2.4.1.x 的內(nèi)核版本中開始出現(xiàn),, 設(shè)計(jì)使用的Video for Linux2(簡(jiǎn)稱V4L2)是V4L 的改進(jìn)版,修復(fù)了第一代中的部分BUG,。

  設(shè)計(jì)的圖像采集及處理程序主要基于V4L2 架構(gòu),, 通過(guò)對(duì)一些ioctl 函數(shù)的調(diào)用來(lái)實(shí)現(xiàn)視頻設(shè)備的打開,圖像的采集處理,,圖像的顯示等,。幾個(gè)主要的ioctl 函數(shù)的簡(jiǎn)介:

  1)ioctl(fd,VIDIOC_S_FMT,, &fmt):用于設(shè)置圖像的格式,。

  2)ioctl(fd, VIDIOC_REQBUFS, &req):向內(nèi)存申請(qǐng)緩沖區(qū),,申請(qǐng)的buffer 個(gè)數(shù)存在count 中,。

  3)ioctl(fd, VIDIOC_QUERYBUF,, &buf):查詢已經(jīng)分配的V4L2 的視頻緩沖區(qū)的相關(guān)信息,, 包括視頻緩沖區(qū)的使用狀態(tài)、在內(nèi)核空間的偏移地址,、緩沖區(qū)長(zhǎng)度等,。

  4)ioctl(fd, VIDIOC_QBUF,, &buf):放一個(gè)空的視頻緩沖區(qū)到視頻緩沖區(qū)輸入隊(duì)列中,,函數(shù)執(zhí)行成功后,指令的視頻緩沖區(qū)進(jìn)入視頻輸入隊(duì)列,,在啟動(dòng)視頻設(shè)備拍攝圖像時(shí),,相應(yīng)的視頻數(shù)據(jù)被保存到視頻輸入隊(duì)列相應(yīng)的視頻緩沖區(qū)中。

  5)ioctl(fd,, VIDIOC_STREAMON,, &type):?jiǎn)?dòng)視頻采集命令,應(yīng)用程序調(diào)用VIDIOC_STREAMON 啟動(dòng)視頻采集命令后,,視頻設(shè)備驅(qū)動(dòng)程序開始采集視頻數(shù)據(jù),,并把采集到的視頻數(shù)據(jù)保存到視頻驅(qū)動(dòng)的視頻緩沖區(qū)中。

  圖像采集處理流程圖如圖2 所示,。

  圖2 圖像采集處理流程圖

  圖2 圖像采集處理流程圖

  3.3 網(wǎng)絡(luò)服務(wù)器

  系統(tǒng)采用Boa 服務(wù)器,。Boa 是一種非常小巧的Web 服務(wù)器, 其可執(zhí)行代碼只有大約60 kB 左右,。作為一種單任務(wù)Web 服務(wù)器,,Boa 只能依次完成用戶的請(qǐng)求,Boa 支持CGI,,能夠?yàn)镃GI 程序fork 出一個(gè)進(jìn)程來(lái)執(zhí)行,。板上移植該服務(wù)器,Boa 服務(wù)器默認(rèn)開機(jī)自動(dòng)運(yùn)行,,配置conf 文件,。

  服務(wù)器端應(yīng)用程序使用servfox, servfox-R1_1_3 解壓修改Makefile 文件:CC=arm-linux-gcc,,編譯后得到可執(zhí)行文件servfox,,下載到板上,輸入命令chmod +x servfox 為它添加可執(zhí)行屬性,。

  客戶端程序使用spcawiew,, 該程序用于在Linux 主機(jī)上對(duì)服務(wù)器進(jìn)行監(jiān)控,,無(wú)需移植。在Linux 上編譯spcaview.由于此軟件包依賴與libsdl,,所以在安裝spcaview 之前,,需要安裝SDL-1.2.13. 安裝spcaview 軟件后,在源文件目錄上有3 個(gè)可執(zhí)行文件,,spcacat :簡(jiǎn)單圖片的抓取工具,,不能用于網(wǎng)絡(luò)監(jiān)視客戶端,Spcaserv:流媒體服務(wù)器,,Spcaview: 用來(lái)紀(jì)錄數(shù)據(jù)流,,也能用來(lái)播放數(shù)據(jù),也能作為網(wǎng)絡(luò)監(jiān)視客戶端用,。

  4 監(jiān)控過(guò)程

  4.1 在Linux 操作系統(tǒng)上的監(jiān)控

  正常啟動(dòng)運(yùn)行開發(fā)板,,運(yùn)行服務(wù)器端程序servfox: servfox-d /dev/video0-s 320x240-w 7070。

  在Linux 上運(yùn)行: ,。/spcaview-g-s 320x240-w 10.1.91.230:7070

  其中10.1.91.230 是服務(wù)器的IP 地址,,這樣就可以在PC機(jī)上看見USB 攝像頭采集進(jìn)來(lái)的數(shù)據(jù)了。

  系統(tǒng)是裝在虛擬機(jī)中的fedora 9 linux 系統(tǒng),,可以流暢地觀察到攝像頭監(jiān)控區(qū)域的情況,。

  4.2 Windows 操作系統(tǒng)上的監(jiān)控

  對(duì)于網(wǎng)絡(luò)監(jiān)控的客戶端,能夠跨平臺(tái)的工具目前只有瀏覽器,,通過(guò)瀏覽器來(lái)監(jiān)控,,無(wú)論是Linux、Windows,、MacOS 或者其他的UNIX 系統(tǒng),只要有圖形界面的瀏覽器,,在桌面環(huán)境下都可以對(duì)遠(yuǎn)程的攝像頭所“控制”的范圍進(jìn)行監(jiān)控,。

  Mini2440 上已經(jīng)有Boa 服務(wù)器可供使用,Spcaview 中的http-java-applet 文件夾中已經(jīng)包含了一個(gè)可以監(jiān)控使用的web 頁(yè)面,,將該文件夾復(fù)制到Boa 服務(wù)器的主文件夾/www 下,。

  由于http-java-applet 文件夾內(nèi)含的WEB 主頁(yè)面(Index.html)包含了JAVA 控件,所以先在主機(jī)上安裝JAVA 環(huán)境,,讓瀏覽器支持JAVA 插件,。

  安裝好JRE 后, 在瀏覽器的地址欄上輸入服務(wù)器地址,,即可實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,。

  4.3 遠(yuǎn)程抓拍

  通過(guò)web 表單提交CGI 來(lái)運(yùn)行應(yīng)用程序。

  通用網(wǎng)關(guān)接口(CGI)規(guī)范允許Web 服務(wù)器執(zhí)行其他的程序并將它們的輸出儲(chǔ)存在發(fā)送給Web 瀏覽器的文本,、圖形和音頻中,。服務(wù)器與CGI 程序的結(jié)合能夠擴(kuò)充World WideWeb 的能力,。

  CGI 程序可以由C、Perl 或者UNIX Shell 腳本等流行編程語(yǔ)言編寫,。

  在本設(shè)計(jì)中,,網(wǎng)頁(yè)上的按鈕shoot the picture 提交了一個(gè)名為V4L 的CGI 文件v4l.cgi,該文件是用shell 腳本編寫的,,用于在板上運(yùn)行已編譯好的圖像采集程序并對(duì)抓拍的圖片返回到新打開的網(wǎng)頁(yè)中進(jìn)行查看,。

  Shell 腳本(v4l.cgi)內(nèi)容如下:

  #! /bin/sh

  /www/http-java-applet/v4l2

  echo “Content-type: text/html; charset=gb2312”

  echo

  echo “……”

  echo “

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