王小團(tuán),羅 杰
(船舶重工集團(tuán)公司723所,揚(yáng)州 225001)
目前,應(yīng)用于安防領(lǐng)域的視頻監(jiān)控設(shè)備是居民日常社會(huì)活動(dòng)中的重要輔助設(shè)備,具有很大的應(yīng)用空間。隨著Internet技術(shù)和嵌入式技術(shù)的快速發(fā)展,嵌入式網(wǎng)絡(luò)視頻監(jiān)控設(shè)備發(fā)展十分迅速。
針對(duì)嵌入式網(wǎng)絡(luò)視頻監(jiān)控設(shè)備有幾種解決方案,其中最主要的是軟件解決方案和硬件解決方案。軟件解決方案主要是利用數(shù)字信號(hào)處理器(DSP)加網(wǎng)絡(luò)模塊,但DSP視頻處理算法實(shí)現(xiàn)比較復(fù)雜,系統(tǒng)開(kāi)發(fā)周期較長(zhǎng),軟件開(kāi)發(fā)質(zhì)量不能保證。硬件解決方案主要是利用音視頻的硬件編解碼芯片實(shí)現(xiàn)音視頻的硬件編解碼,這樣開(kāi)發(fā)周期中對(duì)于視頻處理算法的開(kāi)發(fā)將大大減少,項(xiàng)目開(kāi)發(fā)周期將縮短;同時(shí)由于集成芯片的快速發(fā)展,芯片價(jià)格大大降低,降低了項(xiàng)目的開(kāi)發(fā)成本?;谏鲜鲈颍布鉀Q方案對(duì)于中小場(chǎng)合應(yīng)用比較合適[1]。
本文論述的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)采用硬件方案:專(zhuān)用音視頻處理芯片對(duì)音視頻進(jìn)行硬件編解碼,由嵌入式處理器進(jìn)行相應(yīng)的控制,可以滿(mǎn)足高實(shí)時(shí)性、穩(wěn)定性、快速處理、開(kāi)發(fā)周期短的要求。本設(shè)計(jì)選用專(zhuān)用的音視頻處理芯片AT2042和嵌入式處理器芯片ARM9-S3C2410以及網(wǎng)絡(luò)芯片LAN91C111,基于B/S架構(gòu)用以實(shí)現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)監(jiān)控。該視頻監(jiān)控系統(tǒng)還具備監(jiān)測(cè)運(yùn)動(dòng)圖像和報(bào)警的功能。
該系統(tǒng)的硬件主要包括ARM控制芯片和音視頻硬件編解碼芯片AT2042??刂菩酒褂萌枪镜腁RM9芯片S3C2410,主要完成系統(tǒng)總體的控制,包括完成對(duì)網(wǎng)絡(luò)模塊和AT2042的功能配置,用以實(shí)現(xiàn)視頻的網(wǎng)絡(luò)傳輸和編解碼,完成對(duì)存儲(chǔ)接口的配置,用以實(shí)現(xiàn)本地存儲(chǔ)。AT2042主要用來(lái)實(shí)現(xiàn)對(duì)音視頻的硬件編解碼。
如圖1系統(tǒng)硬件框圖所示,該系統(tǒng)的硬件核心部分為ARM9芯片S3C2410和音視頻硬件編解碼芯片AT2042。TVP5150和SAA7121通過(guò)I2C總線(xiàn)和主控制芯片S3C2410進(jìn)行通信[2]。模數(shù)轉(zhuǎn)換芯片TVP5150負(fù)責(zé)把攝像頭采集的美國(guó)彩色電視廣播標(biāo)準(zhǔn)(NTSC)或逐行倒相制式(PAL)模擬電視信號(hào)轉(zhuǎn)換為符合AT2042編碼標(biāo)準(zhǔn)的數(shù)字視頻信號(hào),數(shù)模轉(zhuǎn)換芯片SAA7121負(fù)責(zé)把經(jīng)過(guò)AT2042解碼的數(shù)字視頻信號(hào)轉(zhuǎn)換為可以在液晶顯示器(LCD)顯示屏上播放的模擬視頻信號(hào)。網(wǎng)絡(luò)連接芯片LAN91C11主要用來(lái)進(jìn)行網(wǎng)絡(luò)通信連接。
圖1 系統(tǒng)硬件設(shè)計(jì)框圖
本系統(tǒng)的主要?jiǎng)?chuàng)新之處就是利用了音視頻編解碼芯片AT2042對(duì)音視頻進(jìn)行硬件編解碼。張菁等人的文章[3]提出AT2042具有以下的特點(diǎn):
(1)支持動(dòng)態(tài)圖像專(zhuān)家組(MPEG)-1,MPEG-2,MPEG-4,H.263 和 M-JPEG 等多種視頻壓縮標(biāo)準(zhǔn)[4]。
(2)支持多種圖像分辨率和幀速率,支持固定比特率(CBR)、不定比特率(VBR)2種碼率控制方式。
(3)輸入輸出采用ITU-R 656/ITU-R 601接口標(biāo)準(zhǔn),音頻則采用脈沖編碼調(diào)制(PCM)、串行數(shù)字音頻總線(xiàn)協(xié)議(I2S)商用接口標(biāo)準(zhǔn)。
(4)自動(dòng)運(yùn)動(dòng)偵測(cè)和幀掃描,運(yùn)動(dòng)偵測(cè)區(qū)域和靈敏度可選。
該系統(tǒng)軟件采取B/S架構(gòu),B/S架構(gòu)分成兩部分:瀏覽器端(Browser)和服務(wù)器端(Sever)[4],系統(tǒng)軟件設(shè)計(jì)框圖如圖2所示。用戶(hù)在瀏覽器(Browse)通過(guò)輸入嵌入式網(wǎng)頁(yè)服務(wù)器的IP地址便可以實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器的訪(fǎng)問(wèn),并由嵌入式WEB服務(wù)器來(lái)完成用戶(hù)指令。
圖2 系統(tǒng)軟件設(shè)計(jì)框圖
本嵌入式網(wǎng)絡(luò)視頻服務(wù)器的工作流程簡(jiǎn)單:系統(tǒng)的用戶(hù)只需在WWW瀏覽器上輸入嵌入式WEB服務(wù)器的IP地址,WEB服務(wù)器接到用戶(hù)連接請(qǐng)求便反饋給瀏覽器1個(gè)ActiveX控件,用戶(hù)在該控件上便可由嵌入式WEB服務(wù)器完成相應(yīng)操作,如進(jìn)行錄像、抓拍、視頻傳輸?shù)取?/p>
該系統(tǒng)軟件需要實(shí)現(xiàn)表1所示的技術(shù)參數(shù)以及配置相應(yīng)的TCP/IP協(xié)議。技術(shù)參數(shù)包括:動(dòng)態(tài)視頻的 MPEG-1,2,4和圖像 M-JPEG編碼模式可選、編碼的像素點(diǎn)為720×576(D1)、352×240(10萬(wàn)像素)可選,編碼幀率每秒25幀及生成打包基本碼流(PES)來(lái)對(duì)視頻數(shù)據(jù)進(jìn)行編碼。
服務(wù)器需要完成的軟件編寫(xiě)工作包括引導(dǎo)程序(Bootloader)的編寫(xiě)、Linux內(nèi)核的移植與配置、應(yīng)用軟件的編寫(xiě)、網(wǎng)絡(luò)通信的配置以及硬件系統(tǒng)中各個(gè)芯片的驅(qū)動(dòng)程序設(shè)計(jì)等工作。本文主要介紹服務(wù)器端的應(yīng)用軟件設(shè)計(jì)、網(wǎng)絡(luò)通信配置和運(yùn)動(dòng)報(bào)警檢測(cè)等功能的實(shí)現(xiàn)。
表1 系統(tǒng)總體設(shè)計(jì)參數(shù)及相應(yīng)的CP/IP協(xié)議
本設(shè)計(jì)應(yīng)用程序采用多線(xiàn)程設(shè)計(jì)。用戶(hù)應(yīng)用程序不但要及時(shí)地把監(jiān)控區(qū)域的最新視頻圖像反饋給瀏覽器,對(duì)視頻監(jiān)控對(duì)象的運(yùn)動(dòng)檢測(cè)報(bào)警,對(duì)視頻監(jiān)控對(duì)象抓拍;還要處理客戶(hù)端與服務(wù)器之間的通信,對(duì)云臺(tái)、攝像頭的實(shí)時(shí)控制以及對(duì)視頻文件的一系列處理(上傳,保存)等任務(wù)。這時(shí),僅僅由單個(gè)線(xiàn)程來(lái)完成所有任務(wù),顯然無(wú)法滿(mǎn)足監(jiān)控系統(tǒng)的實(shí)時(shí)性要求。為此,本系統(tǒng)采用多線(xiàn)程機(jī)制,各線(xiàn)程分別負(fù)責(zé)完成不同的任務(wù)[5]。系統(tǒng)軟件的多線(xiàn)程程序設(shè)計(jì)框圖如圖3所示。
圖3 系統(tǒng)軟件的多線(xiàn)程程序設(shè)計(jì)框圖
視頻傳輸線(xiàn)程主要完成動(dòng)態(tài)視頻從服務(wù)器端到客戶(hù)端的實(shí)時(shí)傳輸,圖像的傳輸線(xiàn)程主要完成抓拍圖片從服務(wù)器到客戶(hù)端的實(shí)時(shí)傳輸。同時(shí),由讀取子線(xiàn)程和發(fā)送子線(xiàn)程分別完成視頻和圖像數(shù)據(jù)的讀取和發(fā)送。
本系統(tǒng)主要是在局域網(wǎng)中實(shí)現(xiàn)實(shí)時(shí)監(jiān)控功能。為了監(jiān)聽(tīng)到從網(wǎng)上發(fā)來(lái)的連接請(qǐng)求,服務(wù)器必須先建立一個(gè)監(jiān)聽(tīng)套接字,端口號(hào)是SERVER_PORT;然后建立一個(gè)線(xiàn)程用于等待用戶(hù)連接并傳輸視頻數(shù)據(jù)。在視頻傳輸線(xiàn)程中,服務(wù)器首先等待客戶(hù)的網(wǎng)絡(luò)連接請(qǐng)求,服務(wù)器接受客戶(hù)連接后,會(huì)為該客戶(hù)創(chuàng)建一個(gè)線(xiàn)程來(lái)專(zhuān)門(mén)與這個(gè)客戶(hù)端進(jìn)行視頻數(shù)據(jù)傳送,這樣使服務(wù)器可以同時(shí)與多個(gè)客戶(hù)端進(jìn)行數(shù)據(jù)傳輸,從而提高效率。當(dāng)傳輸線(xiàn)程啟動(dòng)后,這個(gè)線(xiàn)程將負(fù)責(zé)把視頻數(shù)據(jù)發(fā)送給用戶(hù)。
配置線(xiàn)程主要用來(lái)實(shí)現(xiàn)系統(tǒng)參數(shù)的配置以及控制參數(shù)的配置,包括傳輸比特率、視頻或圖像的編碼模式以及視頻分辨率等、服務(wù)器要實(shí)現(xiàn)哪種操作(比如遠(yuǎn)程錄像、遠(yuǎn)程抓拍、云臺(tái)操作等)。
網(wǎng)絡(luò)通信主要由socket套接字實(shí)現(xiàn),socket套接字實(shí)現(xiàn)服務(wù)器與瀏覽器通信。本視頻服務(wù)器的視頻和圖像傳輸是面向無(wú)連接的,配置該服務(wù)器的socket時(shí),socket客戶(hù)端通過(guò)調(diào)用connect函數(shù)在socket數(shù)據(jù)結(jié)構(gòu)中保存本地和遠(yuǎn)端信息。無(wú)連接的socket的客戶(hù)端和服務(wù)端通過(guò)調(diào)用bind函數(shù)來(lái)配置本地信息。在配置系統(tǒng)參數(shù)時(shí)使用面向連接的socket套接字,用于保證系統(tǒng)參數(shù)配置的安全準(zhǔn)確。
該嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)利用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議簇,在傳輸層對(duì)于實(shí)時(shí)視頻播放本系統(tǒng)選用面向無(wú)連接的用戶(hù)數(shù)據(jù)協(xié)議(UDP),可以保證數(shù)據(jù)量較大的視頻能夠?qū)崟r(shí)播放;對(duì)于客戶(hù)端的控制指令等參數(shù)本系統(tǒng)選用面向連接的TCP協(xié)議,可以保證控制指令安全準(zhǔn)確完成。
應(yīng)用層協(xié)議包括實(shí)現(xiàn)嵌入式網(wǎng)絡(luò)服務(wù)器的越文本傳輸協(xié)議(HTTP)、用于遠(yuǎn)程調(diào)試的遠(yuǎn)程網(wǎng)絡(luò)訪(fǎng)問(wèn)協(xié)議(TENLENT)以及用于遠(yuǎn)程下載監(jiān)控視頻的文件傳輸協(xié)議(TFTP)。
本系統(tǒng)可以實(shí)現(xiàn)遠(yuǎn)程視頻錄像操作,用戶(hù)通過(guò)在客戶(hù)端操作ActiveX控件上的相應(yīng)指令,能實(shí)現(xiàn)動(dòng)態(tài)視頻的遠(yuǎn)程錄像。當(dāng)用戶(hù)點(diǎn)擊錄像按鈕時(shí),WEB服務(wù)器接收到該指令,便開(kāi)啟AT2042的編碼功能,設(shè)置AT2042的相關(guān)參數(shù),配置相關(guān)寄存器,實(shí)現(xiàn)相應(yīng)的編碼模式、編碼像素點(diǎn)等設(shè)置,然后從Mux FIFO讀取編碼數(shù)據(jù),存入到系統(tǒng)存儲(chǔ)模塊中(系統(tǒng)存儲(chǔ)模塊由S3C410的USB接口實(shí)現(xiàn))。本設(shè)計(jì)還可以實(shí)現(xiàn)遠(yuǎn)程的錄像存儲(chǔ),通過(guò)在嵌入式WEB服務(wù)器安裝FTP服務(wù)器,遠(yuǎn)端用戶(hù)可以在PC機(jī)上通過(guò)該FTP服務(wù)器來(lái)調(diào)用存儲(chǔ)的視頻文件和圖像文件。
為了方便用戶(hù)日后回放錄像文件,本設(shè)計(jì)采取文件分段的方法來(lái)保存視頻文件,并以系統(tǒng)時(shí)間來(lái)命名。每隔30 min對(duì)所錄視頻進(jìn)行存儲(chǔ)1次,并調(diào)用系統(tǒng)函數(shù)time,timelocal獲取系統(tǒng)時(shí)間,按照系統(tǒng)時(shí)間命名該段視頻文件[6]。對(duì)于動(dòng)態(tài)視頻文件,本設(shè)計(jì)采用“.VIDEO”為結(jié)尾來(lái)命名該視頻文件,對(duì)于抓拍的靜態(tài)圖像文件,本設(shè)計(jì)采用“.PICTURE”為結(jié)尾來(lái)命名該圖像文件。
音視頻編解碼器AT2042有自動(dòng)運(yùn)動(dòng)偵測(cè)和幀掃描、運(yùn)動(dòng)偵測(cè)區(qū)域和靈敏度可選的功能。本設(shè)計(jì)為了滿(mǎn)足對(duì)于無(wú)人值守的區(qū)域或者時(shí)間段內(nèi)的監(jiān)控報(bào)警需求,可以選擇是否開(kāi)啟AT2042的運(yùn)動(dòng)檢測(cè)報(bào)警功能。
AT2042提供的硬件運(yùn)動(dòng)檢測(cè)算法不僅考慮了亮度在相鄰框架內(nèi)的差異,也考慮了實(shí)際移動(dòng)向量。它提供了非常精確的運(yùn)動(dòng)甚至很多噪音視頻上的檢測(cè)。為了滿(mǎn)足不同的運(yùn)動(dòng)檢測(cè)強(qiáng)度等特點(diǎn)(如不同的視頻情況和不同的應(yīng)用系統(tǒng)),它還提供實(shí)際用戶(hù)可以調(diào)整的運(yùn)動(dòng)檢測(cè)(除I-VO和P-VOP以外,BVOP等共5個(gè))靈敏度參數(shù)。它們可以調(diào)整為每個(gè)通道的獨(dú)立通道編碼。用戶(hù)可以為每個(gè)通道設(shè)置獨(dú)立運(yùn)動(dòng)檢測(cè)區(qū)和靈敏度參量。
本系統(tǒng)利用AT2042的運(yùn)動(dòng)檢測(cè)可以實(shí)現(xiàn)控制視頻錄像存儲(chǔ)的功能。當(dāng)開(kāi)啟運(yùn)動(dòng)檢測(cè)時(shí),如果系統(tǒng)檢測(cè)區(qū)域沒(méi)有出現(xiàn)運(yùn)動(dòng)的物體,即無(wú)法啟動(dòng)運(yùn)動(dòng)報(bào)警信號(hào),這時(shí)AT2042不會(huì)開(kāi)啟視頻編碼,不會(huì)存儲(chǔ)相應(yīng)時(shí)間段內(nèi)的視頻。當(dāng)出現(xiàn)運(yùn)動(dòng)物體時(shí),系統(tǒng)會(huì)自動(dòng)發(fā)出運(yùn)動(dòng)物體報(bào)警信號(hào),該信號(hào)通知AT2042開(kāi)啟視頻編碼功能,同時(shí)開(kāi)啟視頻存儲(chǔ)功能。
運(yùn)動(dòng)檢測(cè)報(bào)警功能的工作流程圖如圖4所示。首先WEB服務(wù)器設(shè)置監(jiān)測(cè)區(qū)域和靈敏度等參數(shù),當(dāng)檢測(cè)區(qū)域內(nèi)沒(méi)有出現(xiàn)運(yùn)動(dòng)物體時(shí),視頻信號(hào)編碼后暫時(shí)存放在緩沖區(qū)中;當(dāng)系統(tǒng)檢測(cè)到運(yùn)動(dòng)物體進(jìn)入檢測(cè)區(qū)域后,系統(tǒng)發(fā)出報(bào)警信號(hào),同時(shí)將緩沖區(qū)中的視頻信號(hào)存入到存儲(chǔ)模塊中;當(dāng)運(yùn)動(dòng)物體離開(kāi)檢測(cè)區(qū)域時(shí),系統(tǒng)停止存儲(chǔ)緩沖區(qū)中的視頻信號(hào)。
在PC監(jiān)控端輸入視頻服務(wù)器的IP地址,通過(guò)網(wǎng)絡(luò)在服務(wù)器上下載Active X控件后,顯示如圖5所示的界面。由畫(huà)面可得,網(wǎng)頁(yè)上視頻播放較為流暢,實(shí)現(xiàn)了720X576的分辨率和25幀每秒的播放速度,如圖5 IE瀏覽器上網(wǎng)絡(luò)視頻播放界面所示。
圖4 運(yùn)動(dòng)檢測(cè)報(bào)警的流程圖
圖5 IE瀏覽器上網(wǎng)絡(luò)視頻播放界面
[1]何腆舉,陳明,段磊強(qiáng),等.基于嵌入式web服務(wù)器的遠(yuǎn)程視頻監(jiān)控系統(tǒng)[J].測(cè)控技術(shù),2007,23(6):62-64.
[2]汪慶年,李桂勇,元美玲.基于S3C2410網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].安防科技,2008(1):26-27.
[3]張菁,周德新,郝福珍,曾宏磊.基于A(yíng)T2042的網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].安防科技,2007(2):42-46.
[4]劉偉峰,唐曉英.基于以太網(wǎng)的嵌入式視頻監(jiān)控系統(tǒng)[J].電視技術(shù),2007(6):79-81.
[5]周良忠.C++面向?qū)ο蠖嗑€(xiàn)程編程[M].北京:人民郵電出版社,2003.
[6]張石,趙百超,王飛,李萬(wàn).具有遠(yuǎn)程監(jiān)控功能的視頻服務(wù)器設(shè)計(jì)[J].安防科技,2009(10):17-20.