白薇薇
摘要:介紹了一種網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的硬件和軟件實(shí)現(xiàn)方法。嵌入式視頻服務(wù)器的核心是S3C2410處理器。嵌入式視頻采集軟件是基于video for Linux開發(fā)的。實(shí)時(shí)JPEG視頻流通過套接字連接從服務(wù)端傳輸?shù)竭h(yuǎn)程客戶端。在實(shí)際應(yīng)用中該系統(tǒng)具有可靠性高、實(shí)用性強(qiáng)的優(yōu)點(diǎn)。
關(guān)鍵詞:ARM,嵌入式系統(tǒng),Linux,視頻監(jiān)控
中圖分類號(hào):TN919 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)01-0233-02
Embedded Video Monitoring System on ARM and Linux
BAI Wei-wei
(Henan University of Technology, Zhengzhou 450001, China)
Abstract: The hardware and software realization of a network video monitoring system was presented. The core of this embedded video server is a S3C2410 processor. And the embedded video capturing software was developed according to video for Linux specification. The real time JPEG video stream was then transmitted from the server to the remote PC client through a socket connection. Advantages of the system include high reliability and good real time performance.
Key words:ARM; embedded system; Linux; video monitoring
視頻監(jiān)控系統(tǒng)已經(jīng)被廣泛應(yīng)用于各種領(lǐng)域,例如安全控制,環(huán)境保護(hù),交通控制。傳統(tǒng)的PC視頻監(jiān)控系統(tǒng)需要視頻卡作為視頻采集硬件。實(shí)時(shí)JPEG視頻流通過套接字連接從服務(wù)器傳輸?shù)竭h(yuǎn)程PC客戶端。由于視頻卡的尺寸、價(jià)格和可靠性,利用其實(shí)現(xiàn)網(wǎng)絡(luò)視頻監(jiān)控是困難的。為了解決此問題,本文將介紹網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的硬件和軟件實(shí)現(xiàn)方法。嵌入式硬件平臺(tái)的核心是S3C2410處理器。視頻采集軟件是基于video for Linux開發(fā)的。實(shí)時(shí)JPEG視頻流通過以太網(wǎng)傳輸?shù)竭h(yuǎn)程控制點(diǎn)。與基于PC的系統(tǒng)或者其他嵌入式系統(tǒng)相比,該系統(tǒng)具有硬件和軟件成本低、實(shí)時(shí)性能好的優(yōu)點(diǎn),可以網(wǎng)絡(luò)化視頻監(jiān)控系統(tǒng)。
1硬件
圖1 系統(tǒng)配置
如圖1所示,USB攝像頭采用了中星微ZC301P,通過視頻壓縮模塊,可以將采集到的視頻數(shù)據(jù)壓縮?;谇度胧揭曨l服務(wù)器的ARM通過USB接口從usb攝像頭中收集被壓縮的JPEG代碼流。該攝像機(jī)的幀速率可以在320*240分辨率下達(dá)到35fps。
圖2 硬件電路示意圖
硬件電路示意圖如圖2所示,嵌入式視頻服務(wù)器的核心是S3C2410處理器,它是一個(gè)由Advanced RISC Machines設(shè)計(jì)的16/32位ARM920T RISC處理器。ARM920T實(shí)現(xiàn)了MMU,AMBA BUS和Harvard高速緩沖體系結(jié)構(gòu)。這一結(jié)構(gòu)具有獨(dú)立的16KB指令和16KB數(shù)據(jù)高速緩存,每個(gè)都是由8字長的行構(gòu)成。以太網(wǎng)接口(DM9000)具有內(nèi)在的TCP/IP協(xié)議棧,用于完成數(shù)據(jù)傳輸。RS232接口(UART)被定義為標(biāo)準(zhǔn)輸出,還可用于把視頻數(shù)據(jù)直接傳送到上位機(jī)上。S3C2410的內(nèi)置USB主機(jī)控制器用于擴(kuò)展USB接口。攝像機(jī)的JPEG碼流通過USB接口進(jìn)入MCU的緩沖區(qū)。
2軟件
2.1攝像頭驅(qū)動(dòng)
USB攝像頭運(yùn)用了ZC301P COMS成像,它的成本低、性能高、USB接口協(xié)議靈活、能進(jìn)行同步或異步傳輸、兼容性更好、有圖像處理的應(yīng)用函數(shù)和外置口[]。然而,Linux沒有支持ZC301P的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序補(bǔ)丁可以從http://mxhaard.free.fr/spca50x下載,根據(jù)下列步驟添加到內(nèi)核:
①把驅(qū)動(dòng)程序補(bǔ)丁拷貝到系統(tǒng)文件的目錄下:/HHARM92410-R3/kernel/driver/usb.
②解壓:tar zxvfusb-2.4.31LE06.patch.tai.gz
③打補(bǔ)丁:patch–p1< usb-2.4.31LE06.patch
④修改Makefile文件和Config.in文件
⑤重新編譯(“make dep; make zImage; make modules”)獲取驅(qū)動(dòng)模塊,包括(“spca5xx.o,spcadecoder.o,spca_core.o”)
⑥靜態(tài)加載或動(dòng)態(tài)加載驅(qū)動(dòng)模塊(“insmod spca5xx.o”)驅(qū)動(dòng)攝像機(jī)
2.2嵌入式視頻服務(wù)器
視頻服務(wù)器軟件是基于video for Linux和servfox( http://mxhaard.free.fr) 等開放源碼設(shè)計(jì)的。建立一個(gè)應(yīng)用程序和底層視頻等驅(qū)動(dòng)程序,調(diào)用接口就可以使用video for Linux的API。如圖3:
圖3 視頻采集和傳輸流程圖
①打開視頻設(shè)備:
vd->fd = open ("/dev/video0",O_RDWR); /* vd->fd is the video file handle defined by struct v4l_device *vd */
②讀取視頻設(shè)備文件:
len = read(vd->fd, vd->pFramebuffer,
vd->mmapsize);/* reading the frame from the video device file and store it into buffer*/
③配置和轉(zhuǎn)換視頻圖像:
jpegsize=convertframe(vd->ptFrame,vd->pFramebuffer,vd->hdrwidth,vd->hdrwidth,vd->hdrheight,vd->formatIn,vd->framesizeIn);
/* Set the the “brightness,contrast,size,format”of raw video data in vd->pFramebuffer and then convert it into vd->ptFrame buffer before transmit ;
vd->formatIn was set to be VIDEO_PALETTE_JPEG for zc301p camera */
④把幀緩存(視頻顯示圖形)儲(chǔ)存為JPEG圖像文件:
fp=fopen(filename,"w");
if(!fp) return-1;
fwrite(vd->ptframe,jpegsize,1,fp);
fclose(fp);
⑤關(guān)閉設(shè)備文件
int v4l_close(v4l_device *vd);
3 結(jié)果
客戶應(yīng)用程序是基于spcaview的開放源程序, 在Linux Redhat9.0上運(yùn)行。視頻采集的分辨率為320*240。建立服務(wù)器和客戶端之間的套接字連接,在實(shí)驗(yàn)室的視頻采集結(jié)果如圖4:
圖4 在pc客戶端進(jìn)行視頻采集
4結(jié)論
設(shè)計(jì)了一種網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),基于S3C2410處理器的嵌入式視頻服務(wù)通過USB攝像頭采集視頻流。視頻服務(wù)器和遠(yuǎn)程pc客戶端的連接是通過LAN建立的。在320*240分辨率的視頻播放中,服務(wù)器和pc客戶端之間的播放延時(shí)少于2s,但是在640*480分辨率中,時(shí)延約為5.3s。通過在PC客戶端應(yīng)用計(jì)算機(jī)視覺算法,例如OpenCV,可以更進(jìn)一步發(fā)展網(wǎng)絡(luò)計(jì)算機(jī)視覺監(jiān)控系統(tǒng)。
參考文獻(xiàn):
[1] 任克強(qiáng),劉蘇,謝斌.基于ARM11和Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J].電視技術(shù),2014,38(5).
[2] 高熊. 基于ARM11的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計(jì)[D]武漢:華中科技大學(xué),2012.
[3] 袁安富,夏生鳳.基于ARM和Linux的DM9000網(wǎng)絡(luò)接口設(shè)計(jì)及驅(qū)動(dòng)實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2011,33(2):27-28.
[4] 張磊.智能視頻監(jiān)控系統(tǒng)中的關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].長春:吉林大學(xué),2012:44-46.
[5] 馬資道,張正炳.基于ARM-Linux的網(wǎng)絡(luò)視頻監(jiān)控終端的軟件實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(2):456-458.
[6] 陳宗成,鄧華秋.基于ARM11的嵌入式視頻傳輸系統(tǒng)的實(shí)現(xiàn)[J].電視技術(shù),2013,37(9):210-213.
[7] 王莉,周偉.基于ARM 的嵌入式Web 服務(wù)器設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(14):90-93.
[8] 楊水清,張劍.精通ARM嵌入式Linux系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2012.
[9] 任明偉.基于ARM的嵌入式視頻采集與遠(yuǎn)程傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].2011.
[10] 李麗紅.嵌入式 Linux 的 USB 驅(qū)動(dòng)設(shè)計(jì)[J].太原理工大學(xué),2011(19):201-205.