王民川
摘要:隨著網(wǎng)絡(luò)通信技術(shù)和嵌入式技術(shù)的發(fā)展,基于嵌入式Web服務(wù)器的視頻監(jiān)控系統(tǒng)已成為監(jiān)控領(lǐng)域的發(fā)展趨勢(shì)。文章以動(dòng)態(tài)數(shù)據(jù)交互技術(shù)和移動(dòng)通信技術(shù)為基礎(chǔ),設(shè)計(jì)了一種基于Web服務(wù)器的B/S方式的遠(yuǎn)程視頻監(jiān)控系統(tǒng),并引入了3G無線模塊的方案,為后續(xù)研究奠定了基礎(chǔ)。
關(guān)鍵詞:視頻監(jiān)控:嵌入式Web; Linux; 3G無線通信
隨著攝像設(shè)備價(jià)格逐漸下降,計(jì)算機(jī)運(yùn)算速度加快和網(wǎng)絡(luò)傳輸速度的提升,基于網(wǎng)絡(luò)的視頻監(jiān)控技術(shù)得到了迅猛的發(fā)展。利用嵌入式技術(shù)對(duì)音像信息采集并對(duì)音像等現(xiàn)場(chǎng)信息進(jìn)行壓縮等相應(yīng)處理,然后通過無線通信技術(shù)傳輸?shù)交ヂ?lián)網(wǎng)上。遠(yuǎn)程用戶通過互聯(lián)網(wǎng)遠(yuǎn)程管理和使用當(dāng)前監(jiān)控信息。本系統(tǒng)通過采用無線通信方式,對(duì)信息點(diǎn)的布置更加合理,同時(shí)減少了有線方式下沒有必要的物理線路,克服了傳統(tǒng)系統(tǒng)只能用于固定現(xiàn)場(chǎng)的監(jiān)視的局限。
1 總體方案設(shè)計(jì)及平臺(tái)搭建
本文監(jiān)控系統(tǒng)具有家庭小型應(yīng)用的特點(diǎn),數(shù)據(jù)量不大,需要成本低廉,簡(jiǎn)單易用,維護(hù)方便,因此,本文的視頻監(jiān)控系統(tǒng)采用B/S結(jié)構(gòu)。嵌入式系統(tǒng)一般都是在通用計(jì)算機(jī)上編寫好程序,然后進(jìn)行交叉編譯,獲得二進(jìn)制代碼格式才能在目標(biāo)設(shè)備上運(yùn)行,在一定程度上是一個(gè)受限制的系統(tǒng)。本系統(tǒng)的嵌入式設(shè)備考慮到源代碼的學(xué)習(xí)性和家用設(shè)備成本問題,采用了開放源代碼、高性能可剪裁內(nèi)核、網(wǎng)絡(luò)功能優(yōu)秀的Linux系統(tǒng)。具體的硬件平臺(tái)連接如圖l所示。
2 視頻采集模塊的設(shè)計(jì)與實(shí)現(xiàn)
本監(jiān)控系統(tǒng)由多個(gè)功能模塊構(gòu)成,視頻服務(wù)器部分主要涉及基于V4L2的圖像采集,以及建立嵌入式Web服務(wù)器、接口程序和建立視頻數(shù)據(jù)庫(kù)3個(gè)部分功能。
2.1 基于V4L2的視頻采集模塊設(shè)計(jì)
V4L (Video for Linux)是建立在開放源代碼系統(tǒng)Linux內(nèi)核中的視頻設(shè)備的API接口,包括視頻設(shè)備的開關(guān)、視頻信息的采集及處理。USB攝像頭在Linux中屬于字符設(shè)備,成功加載了USB攝像頭驅(qū)動(dòng)程序后,插入攝像頭就會(huì)生成設(shè)備文件“/dev/vide0()”。因此,在應(yīng)用程序中通過讀寫該文件來獲取攝像頭采集的圖像數(shù)據(jù)信息并給予處理。
對(duì)于系統(tǒng)中用到的USB接口攝像頭,它的輸入/輸出接口函數(shù)open()、read()、write()、close()可以通過USB接口攝像頭的驅(qū)動(dòng)程序來實(shí)現(xiàn),而對(duì)于內(nèi)存映射、中斷處理以及輸入/輸出通道的控制可以通過接口函數(shù)ioctl()來實(shí)現(xiàn),并固化在struct fileoperations文件中。這樣當(dāng)進(jìn)行open()等系統(tǒng)調(diào)用操作時(shí),Linux操作系統(tǒng)內(nèi)核就可以通過fileoperations結(jié)構(gòu)訪問USB攝像頭的驅(qū)動(dòng)程序提供的函數(shù)。
2.2 視頻編碼
FFmpeg是一個(gè)高效而且具有可移植性的編碼軟件,F(xiàn)Fmpeg的開發(fā)是基于Linux操作系統(tǒng)的,最適合移植到嵌入式系統(tǒng),F(xiàn)Fmpeg具有一套完整的錄制、轉(zhuǎn)換以及流化音視頻的解決方案。FFmpeg本身具有非常先進(jìn)和獨(dú)特的音頻/視頻編解碼庫(kù)libavcodec,很多代碼都是獨(dú)自開發(fā)的。FFmpeg雖然是在Linux操作系統(tǒng)平臺(tái)下開發(fā)的,但它也可以在其他操作系統(tǒng)環(huán)境中運(yùn)行,當(dāng)然也包括Windows。
2.3 視頻數(shù)據(jù)庫(kù)
本系統(tǒng)采用了輕型嵌入式數(shù)據(jù)庫(kù)soLite對(duì)視頻數(shù)據(jù)進(jìn)行管理,它具有支持soL、免費(fèi)小巧、速度快、支持soL92標(biāo)準(zhǔn)、可移植性好、支持ACID事務(wù)、API簡(jiǎn)單等特性。
soLite包括幾個(gè)組件:soL編譯器、內(nèi)核、后端以及附件。soLite通過虛擬機(jī)和虛擬數(shù)據(jù)庫(kù),使soLite的內(nèi)核操作變得更加便捷。把所有的soL語(yǔ)句編譯成可以在soLite虛擬機(jī)中執(zhí)行、易讀的程序集。
2.3.1
SQLite數(shù)據(jù)庫(kù)的設(shè)計(jì)
嵌入式Web服務(wù)器端的應(yīng)用程序是建立在CGI基礎(chǔ)之上的。因此本文中soLite的應(yīng)用開發(fā)也是應(yīng)用CGI程序建立、訪問、更新soLite數(shù)據(jù)庫(kù)的??梢苑譃?步來完成:(l)建立一個(gè)后端數(shù)據(jù)庫(kù);(2)通過HTML文檔制作一個(gè)Web頁(yè)面及內(nèi)建表單;(3)編寫CGI程序。
2.3.2
SQLite的編譯與移植
本文中采用了soLite-2.8.16。在開發(fā)主機(jī)上編譯和移植的步驟:(l)解壓壓縮包源碼。將生成sglite-2.8.16目錄,另外再新建一個(gè)與sqlite平級(jí)的目錄:build目錄。(2)修改sqlite-2.8.16/src /sqliteint.h。為了保證在arm-linux體系結(jié)構(gòu)中B.tree有正確的變量大小,如“ptr”和“char”,還需要對(duì)源碼作一定的修改。(3)修改sqlite-2.8.16目錄下的configure文件。這樣在配置時(shí)不去檢查交叉編譯環(huán)境,執(zhí)行configure命令,進(jìn)行系統(tǒng)配置。然后在sqlit earm-linux目錄下輸入命令:../s qlite/configure-host=arm-linux,這樣在sqlite-arm-linux目錄中就將生成Makefile和一個(gè)libtool腳本,這些將在make時(shí)用到。(4)修改Makefile文件。將GCC=GCC-g-02,改成:GCC=arm-linux-gcc-g-02。由于是將soLite放到Arm-linux的開發(fā)板上運(yùn)行,所以一般將其編譯成靜態(tài)鏈接的形式。所以繼續(xù)修改Makefle,找到sqlite代碼段,將其中的“l(fā)ibsqlite.la”,改成“.libs/libsglite.a”。(5) make,make install。安裝完畢,接下來可以在開發(fā)板上掛載主機(jī)執(zhí)行./sqlite,并應(yīng)用soL命令了。
3 Web服務(wù)器的搭建與數(shù)據(jù)的傳輸
本設(shè)計(jì)采用嵌入式Web服務(wù)器的B/S結(jié)構(gòu),并和客戶端專用監(jiān)控軟件相結(jié)合,形成一個(gè)完整的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。系統(tǒng)把視頻服務(wù)器采集到的視頻數(shù)據(jù)經(jīng)過壓縮編碼,封裝后通過3G網(wǎng)絡(luò)傳輸?shù)娇蛻舳藶g覽器上,客戶通過訪問視頻服務(wù)器的IP地址,對(duì)視頻數(shù)據(jù)庫(kù)進(jìn)行訪問、查詢、刪除等操作。
3.1 嵌入式Web服務(wù)器的構(gòu)建
基于嵌入式Web的遠(yuǎn)程監(jiān)控的設(shè)計(jì)思想就是在系統(tǒng)前端固化設(shè)備中實(shí)現(xiàn)HTTP服務(wù),生成Web Server嵌入到設(shè)備中,為用戶提供基于Web的管理接口。
本系統(tǒng)選用快速安全的Boa服務(wù)器。Boa服務(wù)器的體系結(jié)構(gòu)如圖2所示。
3.2 3G無線網(wǎng)絡(luò)視頻傳輸
3G (3rd-generation,3G)服務(wù)能夠同時(shí)傳送聲音及數(shù)據(jù)信息,能夠提供高速數(shù)據(jù)業(yè)務(wù)是其代表性特征,速率一般在幾百kbps以上。本設(shè)計(jì)從發(fā)展的角度考慮,提出了3G視頻傳輸?shù)姆桨福ㄟ^比較,決定采用大唐電信的DTM6211的GPRS雙模無線模塊作為視頻傳輸?shù)妮d體,可以滿足3G和2G網(wǎng)絡(luò)過渡需求,該模塊支持TDSCDMA與GSM之間的自動(dòng)無縫跨網(wǎng)切換,在TDSCDMA制式下,上下行數(shù)據(jù)傳輸速率可分別達(dá)到384kbps;支持USB和UART這2種通信接口,可以滿足不同主控設(shè)備的需求;采用2.9mm裝配高度的超薄設(shè)計(jì),內(nèi)部集成H.324協(xié)議棧,可方便應(yīng)用于智能手機(jī)中,使得視頻通話更為簡(jiǎn)單。同時(shí),集成TCP/IP協(xié)議,可以方便地連接互聯(lián)網(wǎng)。