張 琳
(天津濱海職業學院,天津 300451)
網絡視頻監控技術是一種集通信信息技術、計算機網絡技術、數字視頻技術等為一體的綜合性應用技術。視頻監控技術是安全領域的研究熱點,已經廣泛應用于軍事、交通、銀行、遠程教學等領域。視頻監控系統的發展階段為模擬監控系統和數字監控系統,目前已到網絡化視頻監控系統時代。傳統視頻監控系統的布控區域、設備擴展和數量上的限制,使得視頻監控只是監視沒有控制。系統的網絡化將打破這個限制,并向智能化方向發展,系統不僅有監視功能還能進行智能控制。本文設計了一種以S3C2410嵌入式處理器和Linux操作系統為核心的網絡視頻監控系統。該系統依靠流媒體技術傳輸視頻信號和視頻數據壓縮技術壓縮數據,能夠實現實時傳送視頻采集數據。該系統本身就是微計算機控制系統,可根據現場的實際情況做出自動控制處理,用戶也可通過網絡對系統中任何一個視頻節點進行監視,并根據要求通過發送控制信息來控制設備的動作。
網絡視頻監控系統的工作原理為壓縮軟件將攝像頭的原始視頻信號壓縮封裝成MPEG4數據格式,然后利用流媒體服務器將此數據再轉換成流媒體格式,再傳送到計算機網絡上,通過以太網口實時傳送。客戶端從嵌入式視頻監控模塊獲得MPEG4視頻數據并播放,而且該系統支持多客戶端同時監控,并把控制信息通過網絡實時傳到監控系統端。
本系統以S3C2410處理器為核心。S3C2410處理器是Samsung公司生產的32位微型處理器,擁有大量的資源,包括獨立的16KB數據緩存和指令緩存、RAM控制器、LCD控制器、NAND閃存控制器、4路DMA、3路UART、帶PWM的定時器、并行輸入輸出端口、8路10位ADC、I2C接口、Touch Screen的接口、USB接口控制器、2路SPI,主頻可達203MHz。平臺配置了16MB16位的Flash和64MB32位的SDRAM。另外外接一個攝像頭帶USB口,通過引出的HOSTUSB接口,在緩沖區中攝像頭采集的視頻數據被存放,然后圖像處理程序在系統平臺上對緩沖后的圖像數據進行處理,將加工后的數據保存并進行UDP打包。最后通過以太網控制器芯片DM9000E擴展的一個網口將圖像發送到Internet上。系統可通過RS232對外部控制設備通信和控制。其硬件結構如圖1所示。

圖1 網絡視頻監控系統硬件框圖
網絡視頻監控系統軟件是由服務器應用軟件和客戶端應用軟件兩部分組成。服務器應用軟件是基于Linux在目標板上運行的程序,客戶端是在PC機上運行程序。整個軟件系統結構圖如圖2所示。

圖2 視頻監控應用軟件
1.服務器應用軟件
服務器的應用程序用于完成視頻信號的采集,然后將USB攝像頭采集的信號經過模數轉換并壓縮,提交給系統中的嵌入式流媒體服務器程序,將數據轉換為用于流式傳輸的格式,再通過IP多播技術的傳輸協議RTP/RTCP以及SDP等一系列標準的IP實時多媒體數據傳輸協議傳送到網絡上。
這一部分軟件主要由四部分組成:嵌入式Linux操作系統、攝像頭驅動程序、數據壓縮子模塊、嵌入式流媒體服務器軟件。
選擇的嵌入式Linux操作系統經過優化以后,具有反應能力強、易固化、體積小、可靠性好等特點。它也同時具備現代操作系統的存儲管理、任務調度、中斷處理、消息隊列等功能;特別是系統本身包含了很多和硬件有關的驅動程序以及TCP/IP協議棧,為嵌入式軟件開發人員提供了良好的開發平臺。
嵌入式流媒體服務器軟件設計流程包含三部分:
(1)系統的初始化過程。根據系統的配置信息如網絡傳輸設置、視頻源的類型、視頻壓縮編碼等,創建并開啟一個數據流。設置數據流的出口之后,產生SDP描述文件,并開啟文件下載功能,使得后來實時取得的流媒體數據可以傳輸。
(2)視頻流處理發送過程。接收MPEG4數據幀之后,調用網絡發送函數發送數據幀,清理內存空間,并開始接受下一幀。
(3)中止視頻流過程。刪除銷毀過程中產生的文件及對象,中止線程,結束程序。服務器端軟件流程如圖3所示。

圖3 服務器應用軟件流程圖
2.客戶應用軟件
客戶端應用程序主要完成終端視頻數據的顯示和控制。網絡傳輸模塊主要用于接收視頻數據流和用戶發送控制信息,存入緩沖區等待處理。視頻數據解壓模塊對壓縮后的數據流進行解壓,并將圖像實時顯示在終端上。
1.嵌入式Linux移植
嵌入式Linux系統包括Bootloader(引導程序)、Kernel(內核)和根文件三個部分。在運行之前,操作系統內核將運行bootloader。本程序主要負責硬件設備的初始化,然后建立內存空間圖,將系統軟硬件環境調整到合適的狀態。
系統的Linux內核版本是2.4.18,在http://ftp.linux.org.uk/下載內核及補丁,解壓縮后將補丁通過管道裝入內核源代碼中。確認Makefile中CROSS_COMPILER=arm-linux-gcc和ARCH=arm。運行make menuconfig命令,在菜單下做相應的配置,之后運行make dep生成依賴文件,最后運行make zImage生成內核壓縮鏡像zImage。
2.攝像頭的驅動程序
系統采用ANC公司生產的Q888型號攝像頭,內置ZC301P芯片、CMOS感光元件,最高分辨率800*600dpi,130萬像素,最大幀速率3ofps,傳輸接口usb1.1,高清鏡頭,自動增益,自動曝光控制;內置DSP視頻壓縮單元,2到8倍的壓縮比,支持動靜態視頻采集。因為Linux系統中沒有ZC301P攝像頭驅動,所以應下載內核補丁,重新編譯內核,將對應的攝像頭支持模塊選上。下載補丁和驅動后解壓、打補丁進行重新編譯內核,在內核配置中選spca5xx文件夾就有需要的驅動程序。生成的新內核中spca5xx..o、spcadecoder.o、spca_core.o是所需要的攝像頭驅動。通過內核啟動insmod這三個.o文件,攝像頭就加載成功,可為應用程序提供基本的I/O操作接口函數open、read、write、close的實現。
3.制作文件系統
文件系統采用的是cramfs格式,cramfs是壓縮文件系統(只讀)。首先,做好根文件系統,創建Linux操作的基本目錄結構/bin,/lib,/etc,/dev,/mnt等目錄。通過各個目錄加載相關配置的文件,配置好后,可創建文件系統的壓縮鏡像通過mkcramfs命令,然后以.cramfs結尾。
Linux中視頻設備的核心驅動程序是Video4Linux(V4L)。它為視頻設備的應用編程提供了一系列合適的接口函數,視頻圖像采集和傳輸設計過程是對/dev/video設備的操作過程。系統視頻采集模塊和傳輸模塊的流程如圖2中所示。
1.打開視頻設備。利用操作系統提供的open函數打開視頻設備,返回操作句柄,代碼如下:
fd=open(videodevice,O_RDWR);
2.讀取設備信息。V4L使用VIDIOCGPICT指令得到視頻信息:
Ioctl(fd,VIDIOCGPICT,&videopict);
3.更改視頻當前設置,代碼如下:
Ioctl(fd,VIDIOCSPICT,&videopict);
4.視頻的采集。操作系統會提供mmap函數實現內存映射。
5.對采集后的視頻圖像進行處理。
6.關閉視頻設備,具體代碼如下:Close(fd)。
USB攝像頭采集到的視頻信號經過模數轉換并壓縮,提交給系統中的嵌入式流媒體服務器程序,將其轉換為利于流式傳輸的數據,然后通過一系列標準的IP實時多媒體數據傳輸協議如RTP/RTCP以及SDP等將數據傳送到網絡上。

圖4 嵌入式流媒體服務器靜態UML類圖
1.嵌入式流媒體服務器的軟件設計
軟件采用C+ + 語言編寫,靜態UML類圖設計如圖5所示。系統由CMediaFlow類所代表的視頻媒體數據流構成, 數據流由一系列節點串聯而成。CMedianode類抽象地表示一系列節點。每個節點都是一個線程,一個線程有一個消息隊列(CMsqQueue類)。消息隊列用于接收相應的消息(CMSQ類),然后進行處理動作。也就是說,CMediasource類派生至CMedianode類,它表示所有數據流源頭的節點,即數據流入點。類似地,CMediasink類派生至CMedianode類,它表示所有數據流的接收節點,即數據流的出口點。CMediaframe類表示數據流中的真實數據,數據流從數據源流向數據流出口。CVideosource類派生自CMediasource類,表示視頻數據入口點。

圖5 TCP網絡通信流程
實時視頻數據的獲得是通過調用嵌入式Linux 操作系統的內核驅動來完成。代表視頻數據的出口點是CRtpTransmitter類派生至CMediaSink類,對通過它封裝網絡RTP/RTCP協議的操作,將視頻數據流直接發送到網絡。HTTP 服務器的功能是通過CHttpServer類實現的, SDP 文件通過HTTP協議傳送給客戶端, 然后客戶端根據SDP 文件的描述信息來獲得視頻流的IP 多播包。 SDP會話描述協議文件的操作由CSdpfile類實現,并根據當前的視頻流配置信息生成SDP文件。
2. 視頻網絡傳輸
系統視頻網絡傳輸采用TCP協議,視頻服務器負責采集視頻圖像數據,該服務器建立好TCP服務器后等待客戶端的連接;客戶端進行初始化,工作完成后,會主動連接TCP服務器,客戶端得到應答后會建立連接,然后接收壓縮視頻數據并進行實時顯示。網絡傳輸的編程是利用internet的流式套接字設計的。TCP網絡通信流程如圖5所示。用戶發送控制云臺信息給監控系統來跟蹤選定目標,它是利用socket的不同的端口號來區別控制信息還是請求視頻信息,系統接收到控制信號后通過RS232對云臺進行控制。
監控系統搭建有一個路由器、PC電腦和兩個網絡視頻控制器(本系統)控制兩個攝像頭和攝像云臺。系統可通過RS232對外部控制設備通信和控制,網絡視頻控制器可遠程控制云臺的上下左右轉動,控制攝像頭的變焦、聚焦、變倍等。路由器進行上網方式的選擇、信道、模式、安全選項、SSID等無線設置,為了安全性,再進行綁定MAC地址、防火墻設置等等。PC電腦安裝網絡視頻監控系統的服務器應用軟件和客戶端應用軟件。服務器端應用程序完成視頻信號的采集、轉換、壓縮和傳輸;客戶端應用程序主要完成了終端視頻數據的顯示和控制。網絡視頻節點的安裝可以隨意安放,通過網線同網絡連接,打破傳統視頻監控系統地理位置的限制。擴展數量上只要有IP就可以擴展,沒有任何的限制,每個設備都要分配一個IP地址。
此監控系統具備視頻信號的傳輸、顯示、記錄等基本功能,系統本身還具有自動報警的功能,只要有人進來系統就會自動報警,用戶可以識別并且響應監視目標、報警信息以及確認復查報警信息等。通過計算機視覺技術可以將監控場所的前景和背景目標進行完全分離,對當前的監控場所進行監視并根據選定目標進行準確的識別、跟蹤、提取。在監控場景內,用戶可以設置報警規則,當監控場所中有目標出現,并與設定的報警規則有沖突時,系統可以發出自動警報,監控中心會發出報警提示,用戶可以實時瀏覽報警信息,用戶可通過客戶端應用軟件通過IP地址查看任何視頻節點信息,畫面可任意切換,此外系統還可發送控制信息來控制系統的其他設備,如安防系統的門禁,網絡視頻監控系統與支持數字視頻服務器功能的門禁控制器同時實現從設備協議層到軟件數據庫的雙重數據交換功能,從而實現對門禁及相關部位的圖像抓拍和監視功能。
為了該系統能夠正式投入使用,進行了網絡視頻監控系統的測試。測試包括兩部分,測試前端攝像機的基本參數及實用性;測試監控平臺主要的應用功能。測試的具體內容有實時的視頻瀏覽、多畫面監視輪巡、圖像信息存儲備份、存儲及錄制方式、云臺控制、報警聯動、設備管理、用戶設置管理等,測試結果表明該系統性能良好。
本文設計的網絡視頻監控系統打破了傳統監控系統布控區域、設備擴展和數量上的限制,用戶可以通過網絡監視現場和控制現場設備,并能監視多個現場。實驗結果表明,本系統的工作非常穩定、可靠,實時性強并具有一定的智能化。隨著傳感器技術、人工智能的發展,各國監控系統向網絡標準化、高清化、無線化、簡捷化、智能化發展,在構建和諧、穩定的社會大環境下,智能化監控系統具有非常廣泛的應用價值,該智能化監控系統具有良好的應用前景。我們要繼續對新技術進行開發、研究與應用,繼續優化當前的網絡視頻監控技術,從而更全面地促進社會的和諧、穩定發展。