尚 宇,任顯利,宋曉茹
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,陜西 西安 710021)
隨著嵌入式計(jì)算機(jī)、互聯(lián)網(wǎng)、數(shù)字圖像以及通信等技術(shù)的發(fā)展,視頻監(jiān)控技術(shù)也得到迅速的發(fā)展,并滲透到人們的現(xiàn)實(shí)生活中。視頻監(jiān)控的領(lǐng)域涉及安全監(jiān)控、遠(yuǎn)程醫(yī)療、智能家居、視頻實(shí)時(shí)會(huì)議等。
文中利用Web和嵌入式技術(shù),以 ARM11-S3C6410處理器為硬件核心,以嵌入式Linux系統(tǒng)作為軟件平臺(tái),研究并實(shí)現(xiàn)了一個(gè)嵌入式Web實(shí)時(shí)監(jiān)控系統(tǒng),為嵌入式設(shè)備接入Internet提供了一種簡(jiǎn)單且有效的解決技術(shù),進(jìn)而可以實(shí)現(xiàn)通過(guò)Web瀏覽器對(duì)嵌入式設(shè)備進(jìn)行遠(yuǎn)程監(jiān)控的目的[1]。
文中設(shè)計(jì)一種典型的嵌入式Web監(jiān)控系統(tǒng)主要通過(guò)嵌入式終端上的攝像頭進(jìn)行視頻圖像的采集,視頻服務(wù)器MJPG-streamer然后對(duì)采集過(guò)來(lái)的數(shù)據(jù)進(jìn)行壓縮,傳輸JPEG格式的圖像到用戶客戶端瀏覽器。用戶可以通過(guò)Web瀏覽器實(shí)時(shí)遠(yuǎn)程監(jiān)控?cái)z像頭采集到的視頻圖像[2]。系統(tǒng)整體框架如圖1所示。
圖1 系統(tǒng)總體框架Fig.1 Structure diagram of the system
本系統(tǒng)使用的硬件平臺(tái)功能框圖如圖2所示。該平臺(tái)采用三星處理器S3C6410[3]。該處理器基于ARM1176JZF-S內(nèi)核,64/32位內(nèi)部總線架構(gòu),并且具有豐富的內(nèi)部資源,支持MPEG4/H.264編解碼、VC1的解碼,實(shí)時(shí)視頻會(huì)議和NTSC,PAL的輸出。在片上資源非常豐富的基礎(chǔ)上,對(duì)硬件系統(tǒng)的配置進(jìn)行了相關(guān)的擴(kuò)展,包括1塊256 MB的NAND Flash和2塊64 Mbyte的DDR SDRAM,1個(gè)連接 PC機(jī)用于調(diào)試的串口、2個(gè)USB接口、1個(gè)以太網(wǎng)控制芯片DM9000AE擴(kuò)展了1個(gè)網(wǎng)絡(luò)口,在主控USB接口外接數(shù)字?jǐn)z像頭。
圖2 系統(tǒng)硬件結(jié)構(gòu)框圖Fig.2 Structure diagram of the hardware system
本項(xiàng)目采用的嵌入式Web服務(wù)器有Boa[4](www.boa.org),它一般是單進(jìn)程服務(wù)器,即同一時(shí)刻只能響應(yīng)單個(gè)用戶的,而無(wú)法并發(fā)響應(yīng),這也是和Apache等高性能的Web服務(wù)器主要的區(qū)別,但對(duì)于應(yīng)用于嵌入式設(shè)備的場(chǎng)合里已足夠。 這里介紹常用的web服務(wù)器boa的移植。 Boa的可執(zhí)行代碼只有約60KB,是一個(gè)非常小巧的單任務(wù)服務(wù)器,所以只能依次完成用戶的請(qǐng)求,而不會(huì)fork出新的進(jìn)程來(lái)處理并發(fā)連接請(qǐng)求。但Boa支持CGI,能夠?yàn)镃GI程序fork出一個(gè)新的進(jìn)程來(lái)響應(yīng)用戶的需求。在其站點(diǎn)公布的速度和安全性能測(cè)試中,Boa的性能要好于Apache服務(wù)器。
1)下載源碼
www.boa.org
解壓
#tar xzvf boa-0.94-13.tar.gz
2)編譯源代碼
進(jìn)入源碼目錄的src子目錄
#cd boa-0.94.13/src
找到Makefile文件
#vi Makefile,進(jìn)入 Makefile,找
到CC=gcc,將其改為CC=arm-Linux-gcc,
再找到cpp=gcc-E,將其改為cpp=armlinux
gcc-E,并保存退出。然后執(zhí)行
#Make
#arm-Linux-strip Boa
3)配置 Boa.config文件
部分重要的具體配置如下:
Port 80/*偵聽(tīng)端口號(hào)*/
User0
Group0
DefaultType text/plain
DocumentRoot/www
CGIPath/bin:/usr/bin:/usr/sbin:/sbin//提供CGI程序的PATH環(huán)境
變量
ScriptAlias/cgi-bin//web/cgi-bin///非常重要,CGI腳本路徑
最后將生成的可執(zhí)行程序boa掛在到目標(biāo)系統(tǒng),若能成功地訪問(wèn)靜態(tài)HTML網(wǎng)頁(yè)和運(yùn)行測(cè)試用的CGI程序,則表明配置成功。
目前Web開(kāi)發(fā)中生成動(dòng)態(tài)Web頁(yè)面的方法有CGI和服務(wù)器腳本,如JSP,ASP等,但在嵌入式Web服務(wù)器中,考慮資源有限,一般都只提供CGI支持,因此在嵌入式設(shè)備中Web應(yīng)用實(shí)際上就是基于CGI的開(kāi)發(fā)。
CGI(Common Gate Interface)是一段運(yùn)行在 Web服務(wù)器上的程序,它提供了同客戶端Html頁(yè)面的接口[5]。為了完成服務(wù)器與客戶端的動(dòng)態(tài)交互,依據(jù)cgi標(biāo)準(zhǔn)編寫(xiě)的代碼運(yùn)行在服務(wù)器端,處理來(lái)自用戶瀏覽器的數(shù)據(jù),如表單數(shù)據(jù)的操作、Web數(shù)據(jù)庫(kù)的訪問(wèn)以及遠(yuǎn)程操控等。編寫(xiě)不同的cgi程序,用于視頻采集設(shè)備的初始化以及實(shí)時(shí)控制。CGIC是一個(gè)支持CGI開(kāi)發(fā)的開(kāi)放源碼的標(biāo)準(zhǔn)C庫(kù),只需要在開(kāi)發(fā)的站點(diǎn)和程序文檔中公開(kāi)聲明即可,表明程序使用了CGIC庫(kù),用戶也可以購(gòu)買(mǎi)商業(yè)授權(quán)而無(wú)需公開(kāi)聲明。首先在其官網(wǎng)下載源代碼,目前使用的是cgic205版,設(shè)置交叉編譯器進(jìn)行交叉編譯,并移植cgic庫(kù)。完成移植后,將capture和cgictest.cgi文件復(fù)制到Web服務(wù)器中的/web/cgi-bin目錄下。CGIC庫(kù)移植成功后,可在瀏覽器中訪問(wèn)其測(cè)試頁(yè)面則表明測(cè)試成功。測(cè)試頁(yè)面如圖3所示。
圖3 CGIC庫(kù)測(cè)試頁(yè)面Fig.3 The tset page of CGIClibrary
MJPG-streamer是一個(gè)基于網(wǎng)絡(luò)應(yīng)用的開(kāi)源流媒體服務(wù)器。本課題對(duì)MJPG-streamer流媒體服務(wù)器進(jìn)行深入研究,結(jié)合試驗(yàn)平臺(tái)的特點(diǎn),對(duì)其進(jìn)行修改、編譯,使這個(gè)流媒體服務(wù)器可以正常的工作在系統(tǒng)平臺(tái)上。利用MJPG-streamer流媒體服務(wù)器與Linux系統(tǒng)所提供的API以及豐富的網(wǎng)絡(luò)功能完成視頻數(shù)據(jù)的采集、壓縮和網(wǎng)絡(luò)傳輸。
用戶通過(guò)瀏覽器與嵌入式Web服務(wù)器通信。MJPG-streamer視頻服務(wù)器主要負(fù)責(zé)架設(shè)服務(wù),進(jìn)行配置(端口,顯示參數(shù)),攝像頭的識(shí)別由 s3c2440_camif.c驅(qū)動(dòng)程序完成。MJPG-streamer服務(wù)器是一個(gè)命令行應(yīng)用軟件,它運(yùn)行時(shí)會(huì)啟動(dòng)一個(gè)socket套接字來(lái)偵聽(tīng)8080端口,若有 TCP連接請(qǐng)求,則以 TCP流將視頻發(fā)送出去[6]??梢詮囊粋€(gè)輸入端復(fù)制JPG格式的圖像到多個(gè)輸出端,也可以將從攝像頭采集到的JPEG視頻流通過(guò)網(wǎng)絡(luò)傳輸?shù)綖g覽器上或者嵌入式設(shè)備上。有了視頻服務(wù)器處理數(shù)據(jù)的輸入輸出,在構(gòu)建前臺(tái)網(wǎng)頁(yè)時(shí)可以直接調(diào)用生成相應(yīng)的實(shí)時(shí)數(shù)據(jù),方法是在HTML頁(yè)面上輸入:http://IP地址:端口/?action=參數(shù)”格式來(lái)調(diào)用,其中參數(shù)為“stream”表示調(diào)用視頻網(wǎng)頁(yè),“snapshot”表示調(diào)用相應(yīng)網(wǎng)頁(yè),這個(gè)功能是通過(guò) httpd服務(wù)器實(shí)現(xiàn)的,MJPG-streamer流程圖如圖4所示。
圖4 MJPG-streamer工作流程Fig.4 Workflow of MJPG-streamer
MJPG-streamer其流程圖如圖4,有輸入組件input_uvc和輸出組件output_http,以及out_file等。每個(gè)組件的功能明確。input_testpicture.so將預(yù)設(shè)好的圖片編譯成頭文件,即使攝像頭不工作了,也能繼續(xù)傳輸未完全的;input_uvc.so調(diào)用攝像頭驅(qū)動(dòng),從攝像頭讀取視頻數(shù)據(jù),讀取一幀數(shù)據(jù),判斷數(shù)據(jù)幀的大小,如果數(shù)據(jù)幀太小或者太大,則丟棄。判斷原始數(shù)據(jù)格式,如果是YUV進(jìn)行格式轉(zhuǎn)換后將原始數(shù)據(jù)復(fù)制到全局緩沖區(qū),繼續(xù)刷新緩沖區(qū)。而input_control.so是攝像頭控制接口,output_http.so是一個(gè)網(wǎng)站服務(wù)器,將視頻文件以HTTP視頻數(shù)據(jù)服務(wù)流形式輸出。output_file.so實(shí)現(xiàn)圖片存儲(chǔ)到特定的文件夾。
用戶在客戶端瀏覽器里輸入服務(wù)器的IP(http://192.168.0.6),進(jìn)入登陸頁(yè)面,輸入用戶名和密碼,登陸以后可以看到被監(jiān)控區(qū)域的實(shí)時(shí)畫(huà)面,實(shí)驗(yàn)演示如圖5,圖6所示。
圖5 系統(tǒng)登錄界面Fig.5 The system login page
圖6 嵌入式Web實(shí)時(shí)監(jiān)控畫(huà)面Fig.6 The real time display of embedded web Monitoring
文中設(shè)計(jì)了一種嵌入式web實(shí)時(shí)監(jiān)控系統(tǒng),在ARM嵌入式系統(tǒng)上構(gòu)建嵌入式Web服務(wù)器,用戶通過(guò)網(wǎng)絡(luò)訪問(wèn)Web服務(wù)器,實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)視頻監(jiān)控。本文設(shè)計(jì)采用模塊化設(shè)計(jì),功能實(shí)用,操作簡(jiǎn)便,易于擴(kuò)展,可廣泛應(yīng)用于人們的現(xiàn)實(shí)生活中。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展以及與遠(yuǎn)程醫(yī)療,智能家居等領(lǐng)域的結(jié)合日益緊密,具備網(wǎng)絡(luò)功能的嵌入式系統(tǒng)應(yīng)用正在成為未來(lái)電器的發(fā)展趨勢(shì)。
[1]李波,關(guān)沫.一種基于ARM的嵌入式Web服務(wù)器的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(7):134-137.LI Bo,GUAN Mo.Research and realization of an embedded webServer based on ARM[J].Computer Technology and Development,2013,23(7):134-137.
[2]柯飛雄.基于ARM9網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].廈門(mén):廈門(mén)大學(xué),2008.
[3]Samsung.S3C6410 Datasheet[M].[s.l.]:Samsung,2009.
[4]Larry D,Jon N.Boa Webserver[EB/OL].[2010-04-17].http://www.boa.org.
[5]王國(guó)偉,宋鐵成,陳正石.基于嵌入式Web Server的視頻監(jiān)控服務(wù)器[J].計(jì)算機(jī)工程,2005,31(22):202-204.WANG Guo-wei,SONG Tie-cheng,CHEN Zheng-shi.Video surveillanceserver based on embedded web server[J].Computer Engineering,2005,31(22):202-204.
[6]陳書(shū)益,黃永慧.開(kāi)源視頻服務(wù)器軟件MJPG-streamer的研究和應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(5):172-176.CHEN Shu-yi,HUANG Yong-hui.Research and application of open source video server MJPG-streamer[J].Electronic Design Engineering,2012,20(5):172-176.