陳琳英,凡德剛
嵌入式微處理器環(huán)境下視頻流的采集與傳輸
陳琳英,凡德剛
(太原科技大學 應用科學學院,太原 030024)
提出了一種基于嵌入式技術(shù)的網(wǎng)絡視頻監(jiān)控系統(tǒng)實現(xiàn)方案。系統(tǒng)以嵌入式Linux操作系統(tǒng)和嵌入式S3C2440微處理器為核心平臺,建立基于TCP/IP協(xié)議的視頻服務器,將攝像頭采集來的圖像數(shù)據(jù)壓縮為MPEG-4視頻流后,經(jīng)過網(wǎng)絡傳輸,完成對監(jiān)控現(xiàn)場的網(wǎng)絡視頻監(jiān)控任務。
Linux操作系統(tǒng);S3C2440微處理器;視頻監(jiān)控;嵌入式
伴隨著計算機技術(shù)、圖像處理技術(shù)和網(wǎng)絡技術(shù)的發(fā)展,出現(xiàn)了新型的基于嵌入式技術(shù)的有線網(wǎng)絡數(shù)字視頻監(jiān)控系統(tǒng)。嵌入式系統(tǒng)是以應用為中心,軟硬件可裁減的,具有高可靠性、低成本、嚴要求、綜合性強的專用計算機系統(tǒng)。它主要由嵌入式微處理器、相關(guān)支撐硬件、嵌入式操作系統(tǒng)及應用軟件系統(tǒng)等組成。系統(tǒng)可以提供友好的用戶接口,采用多級權(quán)限控制,定制用戶組,授權(quán)用戶再進行相應操作。用戶還可以通過瀏覽器訪問,實時監(jiān)控音/視頻信號、查看視頻設(shè)備狀態(tài)等[1-3]。
嵌入式網(wǎng)絡視頻監(jiān)控設(shè)備可以直接接入網(wǎng)絡,沒有線纜長度和信號衰減的限制,避免了地域的限制,擴展了布控區(qū)域。所有設(shè)備都以IP地址進行標識,增加設(shè)備只是意味著擴充IP地址,所以說,嵌入式網(wǎng)絡視頻系統(tǒng)具有無限的無縫擴展能力和遠程視頻傳輸能力。因此,基于嵌入式技術(shù)的網(wǎng)絡視頻監(jiān)控系統(tǒng)有著良好的應用發(fā)展前景,它代替當前普遍應用的基于PC的網(wǎng)絡視頻監(jiān)控系統(tǒng)將成為必然趨勢。
結(jié)合網(wǎng)絡通信技術(shù)和視頻處理技術(shù),開發(fā)一套基于ARM的網(wǎng)絡視頻監(jiān)控系統(tǒng)[4-5]。系統(tǒng)由前端數(shù)碼攝像頭、視頻服務器和遠程監(jiān)控端構(gòu)成。視頻監(jiān)控系統(tǒng)采用基于ARM9的S3C2440微處理器,通過在處理器上運行Linux操作系統(tǒng),構(gòu)建嵌入式服務器,接受來自攝像頭的視頻流,進行壓縮編碼,再傳送實現(xiàn)監(jiān)控圖像到目標用戶。用戶即可獲得服務器發(fā)來的音、視頻文件,并可根據(jù)權(quán)限實現(xiàn)播放及錄制功能等。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
硬件的主體采用友善之臂公司的MINI2440開發(fā)板,該板采用了三星公司的S3C2440處理器,并采用穩(wěn)定的CPU內(nèi)核電源芯片和復位芯片來保證系統(tǒng)運行時的穩(wěn)定性。處理器內(nèi)部集成了arm920t處理器核,采用0.18μrn制造工藝的32位微控制器,五級流水線和哈佛結(jié)構(gòu),提供1.1 MIPS/MHz的性能,主頻高、功耗低、集成度高,技術(shù)成熟,廣泛應用于很多嵌入式產(chǎn)品,領(lǐng)域資源豐富。帶獨立的16 KB的指令cache和16 KB的數(shù)據(jù)cache、LCD控制器、RAM控制器、NAND閃存控制器、3路UART、4路DMA、4路帶PWM的timer、并行I/O口、8路10位ADC、Touch Screen接口、I2C接口、I2S接口、2個USB接口控制器、2路SPI,主頻最高可達533 MHz。在此基礎(chǔ)上,開發(fā)板還配備了64 MB SDRAM、64 MB NandFlash、2 MB Nor Flash、1個100 MB以太網(wǎng)RJ-45接口、1個USB Host、1個USB Slave B型接口、1個2.0mm間距10針JTAG接口。通過USB接口外接一個網(wǎng)眼攝像頭,將采集到的圖像數(shù)據(jù)輸入緩沖區(qū),通過視頻采集程序?qū)彌_區(qū)的視頻數(shù)據(jù)進行JPEG壓縮后進行網(wǎng)絡傳輸至客戶端。系統(tǒng)硬件框圖如圖2所示。
圖2 系統(tǒng)硬件框圖
本嵌入式視頻監(jiān)控系統(tǒng)軟件主要由通信協(xié)議、服務器程序和客戶端程序構(gòu)成,如圖3所示。
圖3 視頻監(jiān)控采集軟件結(jié)構(gòu)框圖
1)通信協(xié)議。主要用于負責向客戶端傳輸來自服務器的音、視頻數(shù)據(jù)。能夠?qū)z像頭獲取的圖像屬性,如對比度、分辨率等信息傳遞給客戶端。通過協(xié)議客戶端能夠控制服務器攝像頭改變采集的圖像屬性。
2)服務器程序。主要包括視頻采集模塊、視頻傳輸模塊及攝像頭驅(qū)動程序,實現(xiàn)基于多線程的循環(huán)服務器。整個視頻采集服務流程如圖4所示。
系統(tǒng)中,數(shù)據(jù)采集層通過嵌入式Linux操作系統(tǒng)調(diào)用Video4Linux(V4L)和底層設(shè)備驅(qū)動程序來完成視頻捕獲,對于獲取到的視頻圖像,通過視頻壓縮模塊壓縮成MPEG-4視頻流,再通過視頻傳輸模塊把數(shù)據(jù)發(fā)送到以太網(wǎng)進行傳輸。V4L是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動。它為Linux下的各種視頻設(shè)備提供了統(tǒng)一的編程接口,應用程序通過這些接口函數(shù)就可以操縱各種不同的設(shè)備。視頻數(shù)據(jù)采集模塊工作原理如圖5所示。
圖4 視頻采集服務流程圖
圖5 數(shù)據(jù)采集模塊工作原理
(1)打開視頻設(shè)備。Linux下的視頻設(shè)備文件一般為“/dev/video0”,通過調(diào)用函數(shù)v4l-open(),利用vd->fd=open(“/dev/video0”,O-RDWR)打開設(shè)備并獲得設(shè)備文件描述符vd->fd。
(2)獲取設(shè)備和圖像信息。通過void queryvideo-device(void)函數(shù)獲取設(shè)備信息。
(3)內(nèi)存映射。獲取圖像的方式有兩種:read()直接讀取和mmap()內(nèi)存映射。直接讀取方式通過內(nèi)核緩沖區(qū)來讀取圖像數(shù)據(jù);而本文使用內(nèi)存映射方式mmap(),可以直接把設(shè)備文件映射到內(nèi)存中,進程可以像訪問普通內(nèi)存一樣對文件進行訪問,讀取效率更高。初始化內(nèi)存映射時,需在內(nèi)存中開辟一塊空間,利用ioctl(vd->fd,VIDIOCGMBUF,&(vd->mbuf))操作取得需要映射的內(nèi)存空間大小vd->mbuf.size,利用mmap()函數(shù),即vd->map=(unsigned char*)mmap(0,vd->mbuf.size,PROT-READ|PROT-WRITE,MAP-SHARED,vd->fd,0)操作,把設(shè)備文件的內(nèi)容映射到內(nèi)存,vd->map指針所指向的內(nèi)存區(qū)即為采集的圖像數(shù)據(jù),且此內(nèi)存區(qū)具有可讀寫和共享屬性。
(4)初始化采集參數(shù)。設(shè)置采集視頻圖像的寬度、高度、格式等信息。
(5)采集視頻數(shù)據(jù)。利用ioctl(vd->fd,VIDIOCMCAPTURE,&(vd->mmap))操作采集一幀圖像并存放到內(nèi)存映射區(qū),采集一幀圖像后要進行同步操作,利用ioctl(vd->fd,VIDIOCSYNC,&(vd->frame-current))操作判斷該幀圖像是否獲取完畢。對于獲取到的視頻圖像,通過視頻壓縮模塊壓縮成MPEG-4視頻流,再通過視頻傳輸模塊把數(shù)據(jù)發(fā)送到以太網(wǎng)進行傳輸。
圖像傳輸層是基于TCP/IP協(xié)議下的數(shù)據(jù)通信。應用層通過自定義通信協(xié)議與客戶端進行通信,根據(jù)命令行參數(shù)初始化攝像頭圖像屬性。
3)客戶端程序。其傳輸層也是在TCP/IP協(xié)議下進行通信;應用層通過自定義通信協(xié)議與服務器進行通信。用戶界面是基于Gnome桌面環(huán)境,利用QT進行開發(fā)的。
使系統(tǒng)各硬件連接完好,啟動電源,加載驅(qū)動,確保USB驅(qū)動和攝像頭驅(qū)動正常工作,測試分析結(jié)果如表1所示。監(jiān)控系統(tǒng)啟動后,即可在主機端看到獲取的視頻圖像。結(jié)果表明,基于ARM9 S3C2440的數(shù)字視頻監(jiān)控系統(tǒng)對捕獲的視頻幀編碼效果良好,滿足監(jiān)控系統(tǒng)要求。
表1 視頻監(jiān)控系統(tǒng)測試分析表
文本提出的基于ARM9的數(shù)字視頻監(jiān)控系統(tǒng)以嵌入式Linux和嵌入式微處理器S3C2440為核心平臺,利用V4L2底層進行視頻采集,經(jīng)過jpeglib圖像壓縮編碼后進行流傳輸,客戶端通過QT開發(fā)的界面進行顯示,同時用于控制攝像頭。
實驗測試結(jié)果表明,該系統(tǒng)對捕獲的視頻幀編碼效果良好,且具有成本低、功耗小、可擴展性強、操作簡單等特點,適于住宅小區(qū)、商場、銀行、電梯等公共場合的使用與推廣。
[1]田俊.基于ARM的移動視頻監(jiān)控系統(tǒng)的實現(xiàn)[D].武漢:華中科技大學,2006.
[2]劉宇.基于ARM9的嵌入式可視電話終端的設(shè)計與實現(xiàn)[D].大連:大連理工大學,2006.
[3]張先翔.基于ARM的嵌入式遠程視頻監(jiān)控系統(tǒng)的設(shè)計[D].武漢:武漢理工大學,2010.
[4]王田苗.嵌入式系統(tǒng)設(shè)計與實例開發(fā)[M].北京:清華大學出版社,2002.
[5]甘泉,楊健,陳永泰.ARM處理器啟動代碼的分析與設(shè)計[J].電子產(chǎn)品世界,2004(10):118~120.
Acquisition and Transm ission of Video Streams on Embedded M icroprocessor
CHEN Linying,F(xiàn)AN Degang
(College of Applied Science,Taiyuan University of Science and Technology,Taiyuan 030024,China)
This paper proposes an implementation scheme of network video surveillance system based on embedded technology.System is based on embedded Linux and embedded microprocessor S3C2440 as the core platform,the video server is based on TCP/IP protocol established by the embedded platform,and the image data are collected by the USB camera to compression.Through the network transmission,the network videomonitoring control task has been completed.
Linux operation system;S3C2440 microprocessor;videomonitoring;embedded
TP368.1;TP273
A
10.3969/j.issn.1672-4550.2014.05.007
2013-12-04
山西省基礎(chǔ)研究基金資助項目(2012021014-3)。
陳琳英(1976-),女,博士,副教授,研究方向:光纖通信、光纖傳感技術(shù)。