具有遠(yuǎn)程監(jiān)控功能的視頻服務(wù)器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
硬件部分以三星公司的ARM9芯片S3C2410和韓國(guó)的專用視頻芯片AT2042為核心。S3C2410主要實(shí)現(xiàn)系統(tǒng)控制功能,例如對(duì)AT2042的配置,接收視頻流數(shù)據(jù)并利用USB存儲(chǔ)設(shè)備進(jìn)行存儲(chǔ);配置網(wǎng)絡(luò)接口建立起完善的網(wǎng)絡(luò)功能,以方便用戶通過(guò)Internet對(duì)其進(jìn)行遠(yuǎn)程訪問(wèn)與控制;同時(shí),掛載U盤或硬盤,預(yù)留U口或IDE的接口,可供用戶選擇,實(shí)現(xiàn)本地的海量存儲(chǔ)功能。
整個(gè)系統(tǒng)軟件部分主要分為兩部分:服務(wù)器端和客戶端(C/S模式)。服務(wù)器端包括Bootloader的編寫,Linux操作系統(tǒng)內(nèi)核的生成,系統(tǒng)文件的配置以及用戶應(yīng)用軟件(實(shí)時(shí)視頻傳輸、錄像、遠(yuǎn)程回放、抓拍);客戶端是通過(guò)輸入IP地址訪問(wèn)指定的服務(wù)器,這時(shí)客戶端會(huì)通過(guò)網(wǎng)絡(luò)從服務(wù)器端下載并安裝預(yù)先設(shè)計(jì)的ActiveX控件,用戶可以通過(guò)這個(gè)控件實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、視頻回放、圖像抓拍等功能。系統(tǒng)總體框圖如圖1所示。
2 系統(tǒng)硬件設(shè)計(jì)
硬件系統(tǒng)主要由視頻編解碼部分、網(wǎng)絡(luò)傳輸部分、本地存儲(chǔ)部分、其他外設(shè)和接口部分組成,如圖2所示。包括S3C2410和AT2042、NAND Flash和SDRAM、數(shù)/模轉(zhuǎn)換芯片TVP5150和模/數(shù)轉(zhuǎn)換芯片SAA7112以及網(wǎng)卡芯片LAN91C11。接口包括USB接口、IDE接口、網(wǎng)卡接口、電源接口等。
2.1 視頻編解碼部分
視頻編解碼電路主要包括模/數(shù)轉(zhuǎn)換電路和視頻壓縮/解壓芯片AT2042。其中,AT2042主要負(fù)責(zé)對(duì)經(jīng)模/數(shù)轉(zhuǎn)換芯片TVP5150轉(zhuǎn)換來(lái)的數(shù)字視頻數(shù)據(jù)進(jìn)行硬件壓縮。壓縮編碼過(guò)程中,攝像頭采集的模擬視頻信號(hào)先經(jīng)過(guò)TVP5150進(jìn)行前端處理,產(chǎn)生符合AT2042視頻接口標(biāo)準(zhǔn)的數(shù)字視頻信號(hào)。在S3C2410的控制下,該數(shù)字視頻數(shù)據(jù)由壓縮/解壓芯片AT2042進(jìn)行硬件壓縮編碼,產(chǎn)生的編碼數(shù)據(jù)流通過(guò)芯片內(nèi)部集成的Mux FIFO接口輸出。網(wǎng)絡(luò)視頻服務(wù)器的解壓縮編碼是壓縮編碼的逆過(guò)程,需要解壓的數(shù)據(jù)流通過(guò)AT2042內(nèi)部集成的Demux FIFO接口輸入,解壓縮編碼電路基本原理類似于壓縮編碼,這里不再贅述。視頻編碼電路框圖如圖3所示。TVP5150是TI公司生產(chǎn)的一款電視信號(hào)解碼專用芯片。它對(duì)輸入的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換,TVP5105支持NTSC/PAL/SECAM三種制式,實(shí)現(xiàn)模擬視頻信號(hào)轉(zhuǎn)換為數(shù)字并行信號(hào)ITU-R BT.601或ITU-RBT.656碼流格式。由于AT2042視頻接口滿足ITU.RBT656標(biāo)準(zhǔn),故TVP5150輸出配置為8位的YUV422格式。
解碼芯片TVP5150的AIPIA模擬信號(hào)輸入口與攝像頭的信號(hào)輸出端相連,并向壓縮編碼芯片AT2042傳送視頻信號(hào)。由于TVP5150分場(chǎng)同步脈沖和行同步脈沖,分別對(duì)應(yīng)的輸出端為VSYNC和HSYNC,AT2042根據(jù)與之相連的VSYNCIN和HSYNCIN信號(hào)線來(lái)實(shí)現(xiàn)圖像的場(chǎng)同步和行同步操作;AT2042的視頻信號(hào)輸入數(shù)據(jù)線VIN[7:0]與TVP5150的輸出端YOUT[7:0]相連。AT2042將接收到的數(shù)據(jù)流傳送到壓縮編碼單元,壓縮編碼后的視頻數(shù)據(jù)存儲(chǔ)到外部SDRAM中,同時(shí)通過(guò)片內(nèi)的SDRAM控制器來(lái)實(shí)現(xiàn)對(duì)SDRAM的訪問(wèn),并將數(shù)據(jù)流通過(guò)HPI總線發(fā)送到S3C2410以便通過(guò)網(wǎng)絡(luò)傳輸?shù)絇C監(jiān)控端,用于實(shí)現(xiàn)遠(yuǎn)程的實(shí)時(shí)監(jiān)控。
2.2 網(wǎng)絡(luò)傳輸部分
主控制芯片S3C2410通過(guò)地址、數(shù)據(jù)、控制線以及片選信號(hào)線對(duì)網(wǎng)絡(luò)芯片LAN91C11進(jìn)行控制和通信。主芯片發(fā)送信號(hào)時(shí)首先置發(fā)送使能信號(hào),數(shù)據(jù)發(fā)送信號(hào)端TXD0~TXD1與LAN91C11的TXD0~TXD1引腳連接,作為數(shù)據(jù)的發(fā)送通道以S3C2410的時(shí)鐘信號(hào)TCK發(fā)送數(shù)據(jù)。數(shù)據(jù)接收端RXD0~RXD1與LAN91C11的RXD0~RXD1引腳對(duì)應(yīng)連接,為數(shù)據(jù)接收通道。
LAN91C11由S3C2410選通信號(hào)線AEN來(lái)選通,通過(guò)對(duì)LAN91C11一系列寄存器的設(shè)置,可以實(shí)現(xiàn)視頻流的網(wǎng)絡(luò)傳輸。LAN91C11的INTRQ0端用來(lái)產(chǎn)生中斷信號(hào)。以太網(wǎng)控制芯片通過(guò)DMA通道進(jìn)行數(shù)據(jù)的傳輸。首先設(shè)置好傳輸控制和傳輸?shù)刂芳拇嫫鞯膮?shù),依次從指定的數(shù)據(jù)存儲(chǔ)區(qū)域讀取數(shù)據(jù),送入內(nèi)部發(fā)送緩沖器中,用MAC對(duì)數(shù)據(jù)進(jìn)行封裝發(fā)送,并同時(shí)記錄已發(fā)送完的字節(jié)數(shù),等到整個(gè)數(shù)據(jù)塊發(fā)送完畢。一組數(shù)據(jù)發(fā)送完后請(qǐng)求DMA中斷,由S3C2410進(jìn)行處理。網(wǎng)絡(luò)接口框圖如圖4所示。
2.3 本地存儲(chǔ)部分
存儲(chǔ)接口選用S3C2410自身的LJSB接口功能,該接口可以實(shí)現(xiàn)USB1.1協(xié)議。隨著大容量、小體積U盤的問(wèn)世,更多的用戶都選擇使用該存儲(chǔ)介質(zhì)。
當(dāng)今的USB技術(shù)使得各種能夠自行識(shí)別的外部設(shè)備與設(shè)備終端連接,并自行裝載驅(qū)動(dòng)程序以運(yùn)行新的裝置。而一般即插即用裝置,需要有電源的USB接口進(jìn)行數(shù)據(jù)傳輸并提供電源。當(dāng)發(fā)生短路或連接了受損設(shè)備時(shí),如受損的電纜或連接頭插入U(xiǎn)SB接口時(shí),必須對(duì)USB集線器及主機(jī)裝置提供有效保護(hù)。USB接口的設(shè)計(jì)電路如圖5所示。
[!--empirenews.page--]2.4 其他外設(shè)和控制接口
其他外設(shè)包括Flash、SDRAM、以太網(wǎng)接口、串行通信接口RS232。其中,F(xiàn)lash用于存儲(chǔ)操作系統(tǒng)內(nèi)核和系統(tǒng)軟件,待系統(tǒng)上電后加載到內(nèi)存中;以太網(wǎng)接口將壓縮編碼后的音視頻數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò);RS232接口主要用于基于控制臺(tái)的配置和管理。另外,在調(diào)試過(guò)程中,RS232和以太網(wǎng)接口用于連接宿主機(jī)和目標(biāo)系統(tǒng)平臺(tái),方便了網(wǎng)絡(luò)視頻服務(wù)器系統(tǒng)的開發(fā)和調(diào)試。
3 系統(tǒng)軟件設(shè)計(jì)
整個(gè)嵌入式系統(tǒng)的軟件部分由4部分組成:Boot-loader代碼、Linux操作系統(tǒng)的內(nèi)核生成和Linux下驅(qū)動(dòng)程序及應(yīng)用程序的開發(fā)、文件系統(tǒng)的生成和配置以及用戶應(yīng)用程序。設(shè)備驅(qū)動(dòng)模塊向上層軟件提供一致的接口,主要包括硬件的初始化、總線內(nèi)存地址映射、內(nèi)存分配等,分別被存儲(chǔ)在NAND Flash的4個(gè)分區(qū)模塊中。本設(shè)計(jì)采用的是較節(jié)省空間的CRAMFS只讀文件系統(tǒng)。
3.1 MPEG-4壓縮編碼的實(shí)現(xiàn)
AT2042支持MPEG-1、MPEG-2、MPEG-4、H.263和Motion-JPEG等多種視頻壓縮標(biāo)準(zhǔn),以及ADPCM、MPEG-1 Layer-II和Lyer-III(MP3)等音頻壓縮標(biāo)準(zhǔn)。這些功能是通過(guò)配置相應(yīng)的編碼寄存器實(shí)現(xiàn)的,例如編碼模式、編碼像素點(diǎn)、編碼幀率及設(shè)置編碼流格式(PES、PS、TS)等等。本系統(tǒng)中采用MPEG-4模式、720X576、每秒25幀及生成PES流來(lái)對(duì)視頻數(shù)據(jù)進(jìn)行編碼。
MPEG-4壓縮編碼部分完成對(duì)AT2042和TVP5150相關(guān)寄存器的配置,保證了MPEG-4數(shù)據(jù)流的正常輸出。系統(tǒng)啟動(dòng)后,首先配置AT2042的寄存器,初始化完成后,通過(guò)I2C總線對(duì)TVP5150進(jìn)行初始化配置。在壓縮編碼過(guò)程中,MPEG-4數(shù)據(jù)流接收存儲(chǔ)程序由AT2042的數(shù)據(jù)流緩沖器標(biāo)志信號(hào)來(lái)進(jìn)行控制。當(dāng)緩沖器滿時(shí),RISC_INT0置低,主控制器通過(guò)DMA通道把從AT2042的網(wǎng)卡接口接收過(guò)來(lái)的碼流通過(guò)網(wǎng)絡(luò)通道傳輸?shù)絇C端。其壓縮編碼模塊程序流程如圖6所示。
3.2 遠(yuǎn)程網(wǎng)絡(luò)程序模塊
網(wǎng)絡(luò)控制模塊是外部擴(kuò)展應(yīng)用程序與視頻服務(wù)器交互的一個(gè)模塊。其工作過(guò)程是:在監(jiān)控終端的IE瀏覽器中輸入網(wǎng)絡(luò)視頻服務(wù)器的IP地址,嵌入式網(wǎng)絡(luò)視頻服務(wù)器根據(jù)請(qǐng)求,將相應(yīng)的控制頁(yè)面(即ActiveX控件)反饋給IE瀏覽器,用戶下載控件后,根據(jù)控件上的指令,進(jìn)行相應(yīng)的操作,然后提交。該模塊提取操作的信息,根據(jù)不同信息通過(guò)socket套接口與服務(wù)器進(jìn)行通信來(lái)分別處理相應(yīng)的事件,如調(diào)節(jié)MPEG-4相關(guān)屬性、攝像頭的相關(guān)操作等。該網(wǎng)絡(luò)控制模塊的設(shè)計(jì)主要包括3部分:本地嵌入式web服務(wù)器的配置、ActiveX控件的編寫、socket套接字實(shí)現(xiàn)服務(wù)器與監(jiān)控端通信。遠(yuǎn)程網(wǎng)絡(luò)程序模塊框圖如圖7所示。
3.3 本地存儲(chǔ)部分的實(shí)現(xiàn)
該部分主要實(shí)現(xiàn)的三大功能:U盤空間的監(jiān)測(cè),以系統(tǒng)時(shí)間來(lái)命名存儲(chǔ)文件并將文件保存到U盤上,實(shí)現(xiàn)MPEG-4編碼。視頻編碼存儲(chǔ)主要是利用Linux系統(tǒng)指令、AT2042芯片的視頻編碼功能和自動(dòng)生成傳輸流功能。
(1)顯示U盤存儲(chǔ)空間
首先,利用Linux系統(tǒng)指令與C語(yǔ)言的接口函數(shù)sys-tem(const char*string),執(zhí)行指令會(huì)把U盤空間的容量、可用空間等信息寫入設(shè)定目錄下,然后利用display_string(char*string)函數(shù)將該信息顯示在顯示層面上。這樣可以使用戶很清楚地了解到可用存儲(chǔ)空間的大小。
(2)以系統(tǒng)時(shí)間命名文件名
調(diào)用系統(tǒng)函數(shù)time、localtime,這里需要定義相應(yīng)的結(jié)構(gòu)體tm來(lái)獲取系統(tǒng)時(shí)間,然后將這些信息與建立文件的路徑保存在同一個(gè)字符串,調(diào)用fopen(const char*path,const char*mode)函數(shù)。這樣就實(shí)現(xiàn)了以系統(tǒng)時(shí)間來(lái)命名文件名,可以方便用戶按時(shí)間來(lái)查看文件。
3.4 運(yùn)動(dòng)圖像監(jiān)測(cè)的實(shí)現(xiàn)
該視頻監(jiān)控系統(tǒng)配置AT2042的相關(guān)寄存器,可實(shí)現(xiàn)運(yùn)動(dòng)檢測(cè)的功能。通過(guò)運(yùn)動(dòng)檢測(cè)來(lái)控制視頻數(shù)據(jù)的存儲(chǔ)和報(bào)警。運(yùn)動(dòng)檢測(cè)(報(bào)警)算法可以控制存儲(chǔ)動(dòng)作,節(jié)省存儲(chǔ)空間。例如,開始無(wú)運(yùn)動(dòng)報(bào)警信號(hào),存儲(chǔ)模塊處于等待狀態(tài);運(yùn)動(dòng)報(bào)警信號(hào)到來(lái),啟動(dòng)存儲(chǔ)模塊,在一定時(shí)間內(nèi)如果沒(méi)有繼續(xù)收到運(yùn)動(dòng)報(bào)警信號(hào),存儲(chǔ)模塊自動(dòng)停止工作。這樣存儲(chǔ)量比連續(xù)存盤少得多,大量無(wú)運(yùn)動(dòng)的視頻被剪截掉了,大大提高了存盤效率,有效地節(jié)省了存儲(chǔ)空間。工作過(guò)程是這樣的:預(yù)先進(jìn)行檢測(cè)區(qū)域設(shè)定,從攝像機(jī)來(lái)的視頻信號(hào)一方面進(jìn)行視頻壓縮,壓縮的碼流輸出到緩沖區(qū)中;另一方面進(jìn)行運(yùn)動(dòng)檢測(cè),當(dāng)運(yùn)動(dòng)條件滿足時(shí)發(fā)出報(bào)警信號(hào),存儲(chǔ)設(shè)備開始工作。存儲(chǔ)設(shè)備一接到啟動(dòng)信號(hào)就將緩沖區(qū)的壓縮碼流全部保存下來(lái),接著連續(xù)存儲(chǔ)視頻壓縮輸出的碼流,直到存儲(chǔ)控制指示停止存盤為止。運(yùn)動(dòng)方向的估計(jì)可以實(shí)現(xiàn)監(jiān)控系統(tǒng)中的警戒線報(bào)警功能。在圖像畫面上設(shè)定警戒線以及方向,相應(yīng)地產(chǎn)生一個(gè)預(yù)警區(qū)域。圍繞邊界線產(chǎn)生邊界區(qū)域或邊緣點(diǎn)集,監(jiān)測(cè)是否有運(yùn)動(dòng)越過(guò)警戒線進(jìn)入警戒區(qū)。
結(jié) 語(yǔ)
本視頻服務(wù)器既有視頻遠(yuǎn)程實(shí)時(shí)傳輸,又具有本地存儲(chǔ)的功能,再配置AT2042實(shí)現(xiàn)多種視頻格式的編碼和運(yùn)動(dòng)檢測(cè)、報(bào)警功能,使用起來(lái)方便易行,可以得到廣泛的應(yīng)用。該視頻服務(wù)器集成普通攝像機(jī)和網(wǎng)絡(luò)轉(zhuǎn)換器,將圖像轉(zhuǎn)換為基于TCP/IP網(wǎng)絡(luò)標(biāo)準(zhǔn)的數(shù)據(jù)包,使攝像機(jī)所攝的畫面通過(guò)RJ-45以太網(wǎng)接口直接傳送到網(wǎng)絡(luò)上,通過(guò)網(wǎng)絡(luò)即可遠(yuǎn)程監(jiān)視畫面。該視頻服務(wù)器采用了最先進(jìn)的攝像技術(shù)和網(wǎng)絡(luò)技術(shù),具有強(qiáng)大的功能。內(nèi)置的系統(tǒng)軟件能實(shí)現(xiàn)真正的即插即用,使用戶免去了復(fù)雜的網(wǎng)絡(luò)配置;內(nèi)置的大容量?jī)?nèi)存能存儲(chǔ)警報(bào)觸發(fā)前的圖像;內(nèi)置的I/O端口和通信口便于擴(kuò)充外部周邊設(shè)備,如門禁系統(tǒng)、紅外線感應(yīng)裝置、全方位云臺(tái)。