Linux嵌入式視頻的網(wǎng)絡(luò )監控系統設計
隨著(zhù)計算機技術(shù)及網(wǎng)絡(luò )技術(shù)的迅猛發(fā)展,公安、安防行業(yè)的發(fā)展趨勢必然是全面數字化、網(wǎng)絡(luò )化。傳統的模擬閉路電視監控系統有很多局限性:傳輸距離有限、無(wú)法聯(lián)網(wǎng),而且模擬視頻信號數據的存儲會(huì )耗費大量的存儲介質(zhì)(如錄像帶),查詢(xún)取證時(shí)十分煩瑣。
基于個(gè)人計算機的視頻監控系統終端功能較強,但穩定性不好,視頻前端(如電壓耦合元件等視頻信號的采集、壓縮、通訊)較為復雜,可靠性不高;谇度胧絃inux視頻的網(wǎng)絡(luò )監控系統不需要用于處理模擬視頻信號的個(gè)人計算機,而是把視頻服務(wù)器內置一個(gè)嵌入式Web服務(wù)器,采用嵌入式實(shí)時(shí)多任務(wù)操作系統。
由于把視頻壓縮和Web功能集中到一個(gè)體積很小的設備內,可以直接連入局域網(wǎng),即插即看,省掉復雜的電纜,安裝方便(僅需設置一個(gè)IP地址),用戶(hù)也無(wú)需安裝任何硬件設備,僅用瀏覽器即可觀(guān)看。
基于嵌入式Linux的視頻網(wǎng)絡(luò )監控系統將嵌入式Linux系統連接上Web,即視頻服務(wù)器內置一個(gè)嵌入式Web服務(wù)器,攝像機傳送來(lái)的視頻信號數字化后由高效壓縮芯片壓縮,通過(guò)內部總線(xiàn)傳送到內置的Web服務(wù)器上。
1 系統總體框架
嵌入式Linux視頻網(wǎng)絡(luò )監控系統是電工電子裝置、計算機軟硬件以及網(wǎng)絡(luò )、通信等多方面的有機組合體,它以智能化、網(wǎng)絡(luò )化、交互性為特征,結構比較復雜。如果利用OSI七層模型的內容和形式,把相應的數據采集控制模塊硬件和應用軟件以及應用環(huán)境等有機組合,可以形成一個(gè)統一的系統總體框架,其系統總體框架示意圖如圖l所示。
系統總體框架示意圖
攝像機傳送來(lái)的視頻信號數字化后,經(jīng)過(guò)壓縮,通過(guò)RS-232/RS485將數據送到內置的Web服務(wù)器,嵌入式LJnux系統的 10/100M以太網(wǎng)口實(shí)現接入Internet網(wǎng)絡(luò ),將現場(chǎng)信號送到客戶(hù)端。整個(gè)系統的核心是嵌入式Linux系統。監控系統啟動(dòng)后,嵌入式Linux 系統啟動(dòng)Web Server服務(wù)程序,接收授權客戶(hù)端瀏覽器的請求,Web Server將根據通信協(xié)議完成相應的監測。
2 系統實(shí)現
2.1 硬件平臺設計
本系統以公開(kāi)的嵌入式Linux源代碼為基礎,根據設計的嵌入式目標板編寫(xiě)相應的Bootloader程序,然后裁剪出合適的內核和文件系統。目標平臺 CPU采用Motorola公司生產(chǎn)的ColdFire嵌入式處理器MFC5272。MFC5272采用ColdFire V2可變長(cháng)RISC處理器核心和DigltalIDNA技術(shù),在66MHz時(shí)鐘下能夠達到63Dlnrystone2.1MIPS的優(yōu)良處理能力。
內部SIM(System IntegratedModule)單元集成了豐富的通用模塊,只需很少的外圍芯片就可以實(shí)現兩個(gè)RS-232串行口和一個(gè)USB Slave接口。MFC5272還內嵌一個(gè)FEC(快速以太網(wǎng)控制器),片外擴展一片LXT97l,方便地實(shí)現了一個(gè)100/10 BaseT的以太網(wǎng)接口。能夠與常用的外圍設備(如SDRAM、ISDN收發(fā)器)實(shí)現無(wú)縫連接,從而簡(jiǎn)化了外圍電路的設計,降低了產(chǎn)品成本、體積和功耗。
2.2 軟件設計與實(shí)現
視頻監控系統軟件結構采用的是瀏覽器,服務(wù)器(B/S)網(wǎng)絡(luò )模型,即由客戶(hù)端通過(guò)Web向服務(wù)器提出請求,服務(wù)器對請求做出確認響應并執行相應的任務(wù)(如向客戶(hù)端發(fā)送組播地址、圖像格式、壓縮格式等),建立連接后就可以在客戶(hù)端監控被控點(diǎn),從而實(shí)現遠程網(wǎng)絡(luò )監控。服務(wù)器(Web Servei)端即現場(chǎng)監控點(diǎn)的軟件結構包括采集模塊、壓縮編碼模塊、網(wǎng)絡(luò )通信模塊、控制模塊等,如圖2所示。
2.2.1 視頻采集模塊設計
由于攝像機得到的是模擬的視頻信號,不能直接為計算機使用,因此要使視頻在網(wǎng)上傳輸,必須首先對其數字化。本系統選用的視頻采集卡為Conexant公司的Bt848卡,該卡不需要任何本地緩存來(lái)存儲視頻像素數據,還能夠充分利用基于PCI總線(xiàn)系統的高帶寬和固有的多媒體功能,并且能夠與其他多媒體設備實(shí)現互操作。
在整個(gè)系統中由于視頻采集的速度通常高于應用軟件取得數據并進(jìn)行處理的速度,因此為了保證視頻數據的連續性,采用了三緩存結構,緩存A是Bt848視頻采集的目標地址,在RISC指令的直接控制下,采集的數據都先存放在這個(gè)緩存中;B和C組成乒乓式結構循環(huán)往復使用,當某一幀數據采集完畢后,產(chǎn)生中斷,在中斷服務(wù)程序中將緩存A的數據復制到緩存B(或C)中,然后采集下一幀,當下一幀數據采集完后.再將緩存A中的數據復制到緩存C(或B)中,當應用程序需要數據時(shí)就從緩存B或C中讀取最新的一幀圖像。緩存B和C交替使用,能夠保證應用程序從緩存讀數據的操作和驅動(dòng)程序向緩存寫(xiě)數據的操作不會(huì )發(fā)生沖突,避免了數據的損壞和遲延。
2.2.2 視頻壓縮編碼的設計
本設計選用了基于對象的MPEG-4視頻編碼技術(shù),首先對輸入的任意形狀的VOP序列,用基于塊的混合編碼技術(shù)編碼。處理順序是先幀內VOP,后幀間VOP和雙向預測VOP。
在對VOP的形狀信息編碼之后,取得任意形狀VOP的采樣,每個(gè)VOP用宏塊柵格劃分成不相交的宏塊,每個(gè)宏塊含有四個(gè)8×8的像素塊,以進(jìn)行運動(dòng)估計和補償及紋理編碼。已編碼的VOP幀保存在VOP幀存儲器中。運動(dòng)向量在當前VOP幀和已編碼VOP幀之間計算。對將被編碼的塊或宏塊,計算其運動(dòng)補償預測誤差。運動(dòng)補償預測后的I-VOP及誤差用8×8塊DCT編碼,并進(jìn)行DCP系數的量化,然后是行程編碼和熵編碼。
最后,形狀、運動(dòng)和紋理信息復合成VOL位流輸出。這種編碼方法可以允許用戶(hù)修改、增加或重定位一個(gè)視頻場(chǎng)景中的對象,甚至可以轉換場(chǎng)景中對象的行為。對于不同的帶寬和計算復雜性需求,不必針對每種情況分別編碼,可以使用同一個(gè)視頻位流,而采用不同的參數以選擇不同的層以獲得靈活性。在出現網(wǎng)絡(luò )擁塞、丟包等現象時(shí)仍能提供連貫性較好的視頻圖像。視頻壓縮編碼進(jìn)程將編碼后的的視頻存放到已編碼視頻緩沖隊列中,同時(shí)激活或等待直播進(jìn)程和存儲管理進(jìn)程的相應處理。
2.2.3 網(wǎng)絡(luò )通信模塊設計
網(wǎng)絡(luò )通信模塊是系統的主體部分,它包含三個(gè)數據通道:監聽(tīng)通道、控制通道和視頻數據通道。監聽(tīng)通道用來(lái)傳輸控制前端設備的命令數據;視頻數據通道用來(lái)傳輸各個(gè)組的視頻數據。三個(gè)通道采用不同的通信端口,所以各個(gè)通道傳輸數據彼此獨立。網(wǎng)絡(luò )通信模塊設計開(kāi)發(fā)是通過(guò)網(wǎng)絡(luò )編程接口(Windows Socket,簡(jiǎn)稱(chēng)Winsoek)來(lái)實(shí)現的。按照系統瀏覽器,服務(wù)器的阿絡(luò )傳輸模型。在服務(wù)器端建立了以SOCKET為類(lèi)型的監聽(tīng)套接字、控制套接字;在客戶(hù)端建立了SOCKET類(lèi)型的請求套接字、控制套接字,這些都是采用ICP協(xié)議封裝傳輸數據的。
另外,在服務(wù)器和客戶(hù)機兩端都用到了一個(gè)組播類(lèi)(CMuhieast),它是專(zhuān)門(mén)為視頻傳輸而封裝的類(lèi)。由CObject派生而來(lái),其中定義了以 SOCKET類(lèi)型的收發(fā)視頻數據的套接宇和組套接字,從而實(shí)現了用組播通信方式來(lái)傳輸UDP協(xié)議封裝的視頻數據包。系統中IP網(wǎng)絡(luò )數據通信流程如圖3所示。
IP網(wǎng)絡(luò )數據通信流程
下面給出在服務(wù)器端建立監聽(tīng)套接字和控制套接字的程序。
……
int ret="O":
BOOL bFlag="TRUE"://設置套接字為可重用端口地址
ret=setsoekopt(IInfo.listenSocket,SOL_SOCKET,SO_REUSE
ADDR,(char)*&bFlag,sizeof(bFlag));
SOCKADDR_IN sockAddr;
char*addr=severaddr.GetBuffer(0); //定義監聽(tīng)套接字
//的地址
sockAddr.sin_family=AF_INET;
sockAddr.sin_addr.S_un.S_addr
=inet_addr(addr);
sockAddr.sin_port=htons(PORT):
if(bind(IInfo.1istenSoeket,(LPSOCKADDR)
2.2.4 控制模塊設計開(kāi)發(fā)
控制模塊實(shí)現了用戶(hù)對前端設備如鏡頭、云臺和畫(huà)面切換的控制。服務(wù)器在接收到由客戶(hù)中心監控終端發(fā)送過(guò)來(lái)的控制信息幀后,對其進(jìn)行判斷解析,并送入各個(gè)相應的控制部件接口,以實(shí)現相應的控制。
3 實(shí)驗結果
將視頻監控系統的web服務(wù)器連接到局域網(wǎng),然后接入Intemet,給web服務(wù)器分配一個(gè)IP地址。在用戶(hù)終端,由于使用普通的瀏覽器只能顯示單畫(huà)面,很不方便,使用微軟公司的VC6.0配合微軟的瀏覽器控件,只需幾分鐘就可完成一個(gè)多畫(huà)面的瀏覽器軟件。在瀏覽器的地址欄中直接輸入視頻服務(wù)器的地
址,即可在瀏覽器頁(yè)面中播放遠程實(shí)時(shí)穩定、流暢的圖像,取得了良好的監控效果。
基于嵌入式Linux視頻的網(wǎng)絡(luò )監控系統的Web服務(wù)器直接連入網(wǎng)絡(luò ),沒(méi)有線(xiàn)纜長(cháng)度和信號衰減的限制,同時(shí)網(wǎng)絡(luò )是沒(méi)有距離概念的,徹底拋棄了地域的概念,擴展了布控區域。又由于視頻壓縮和Web功能集中到一個(gè)體積很小的設備內,直接連入局域網(wǎng)或廣域網(wǎng),即插即看,系統的實(shí)時(shí)性、穩定性、可靠性大大提高,無(wú)需專(zhuān)人管理,非常適合于無(wú)人值守的環(huán)境。隨著(zhù)計算機技術(shù)、網(wǎng)絡(luò )技術(shù)的迅速發(fā)展,人們對視頻監控系統的要求會(huì )越來(lái)越高。相信該系統在電子商務(wù)、視頻會(huì )議、遠程監控、遠程教學(xué)、遠程醫療、水利和電力監控等方面有廣闊的應用前景。
Linux嵌入式視頻的網(wǎng)絡(luò )監控系統設計