1 引言
視頻監(jiān)控技術在政治、經濟、軍事、文化設施的安全防范中有著舉足輕重的作用,隨著多媒體和計算機網絡技術的發(fā)展,視頻監(jiān)控系統(tǒng)經歷了模擬監(jiān)控和數(shù)字監(jiān)控的發(fā)展階段,目前已到了網絡數(shù)字視頻監(jiān)控階段。本文介紹的遠程監(jiān)控系統(tǒng),可利用現(xiàn)有IP網絡實現(xiàn)遠程監(jiān)控和控制攝像頭的調焦、云臺轉動等,可滿足無人值守的要求,實現(xiàn)了功能強大、易于操作的監(jiān)控解決方案。
2 系統(tǒng)總體結構
圖1 系統(tǒng)總體結構
3 網絡視頻服務器結構
圖2 網絡視頻服務器的結構
每臺視頻服務器均有獨立的IP地址,可同時接入4路視頻信號和音頻信號,經過處理后轉換為IP包,利用寬帶局域網和TCP/IP協(xié)議把這些數(shù)據包發(fā)送給監(jiān)控中心的視頻主機(PC機)或網上授權用戶。視頻主機上運行Client端監(jiān)控軟件,可實現(xiàn)1/4/9/16畫面的實時視頻監(jiān)控,也可驅動顯示器陣列進行大屏幕顯示。其他授權用戶可通過IE瀏覽器進行一般性的監(jiān)看。
4 系統(tǒng)軟件結構設計
本軟件采用模塊化程序設計及客戶/服務器模式設計,模塊間通過接口(函數(shù)調用)傳遞數(shù)據。
4.1服務器端軟件結構
服務器端軟件主要由主控模塊、視頻采集模塊、監(jiān)視控制模塊、系統(tǒng)設置/用戶設置模塊、信息查詢模塊、視頻信息處理模塊和網絡傳輸模塊構成。它主要實現(xiàn)多媒體數(shù)據的采集、壓縮、回放、存儲、發(fā)送、信息的處理和查詢等功能。它的軟件結構如圖3所示。
圖3 服務器端軟件結構圖
主控模塊主要是控制各個模塊的正常運行,對各個模塊進行有效的管理,進行一些如初始化系統(tǒng)等必要的工作。
為了減輕CPU負擔,我們采用了硬件方式實現(xiàn)視頻數(shù)據的采集和壓縮。視頻卡以每秒30幀來捕獲動態(tài)圖像。采集后的視頻數(shù)據分為兩路,一路直接送到顯示緩沖區(qū)中進行本地顯示,另一路則由硬件壓縮后存儲在本地硬盤上,或同時傳輸?shù)娇蛻舳耍瑥亩鴮崿F(xiàn)視頻圖像的實時采集、傳輸與顯示。
監(jiān)視控制模塊的主要功能就是將各種前端的動作進行編碼然后發(fā)送到前端,從而實現(xiàn)對前端攝像頭的云臺控制和鏡頭控制。
在系統(tǒng)設置/用戶設置模塊中允許超級用戶修改任意用戶的密碼,還可以增加用戶、刪除用戶和給其他用戶分配權限。系統(tǒng)共有三種權限級別可供選擇:“系統(tǒng)管理員”、“普通管理員”、“普通操作員”。每一種級別都己經分配了默認的權限。
視頻信息處理模塊包括視頻文件的播放、存儲、刪除、抓圖等子功能。
信息查詢模塊主要包括視頻文件、圖片和日志的查詢等功能。系統(tǒng)在保存視頻文件時,以文件創(chuàng)建的時間作為文件名的一部分,并且不同的攝像機所攝的視頻文件保存在不同的目錄中。這樣在文件列表中可以方便的實現(xiàn)按年、月、日、時間段及攝像機來查詢視頻文件。
網絡傳輸模塊可以使客戶端軟件能通過LAN或Internet共享主控服務器的信息,它是利用Socket為客戶機和服務器程序提供不同的Socket系統(tǒng)調用來實現(xiàn)信息共享的。
4.2 客戶端軟件結構
通過客戶端軟件分布在LAN或Internet上的遠程客戶機就可以實現(xiàn)視頻信息共享和遠程控制等操作。該部分采用C/S(客戶/服務器)模式設計,其實現(xiàn)功能由客戶端軟件和服務器端軟件中的網絡傳輸模塊兩部分共同完成。
客戶端軟件主要包括主控模塊、登錄模塊、播放模塊、遠程下載模塊、實時傳輸模塊、遠程控制模塊等。它的結構如圖4所示。
圖4 客戶端軟件結構圖
主控模塊主要是控制各個模塊的正常運行,對各個模塊進行有效的管理,進行一些如初始化系統(tǒng)等必要的工作。
登錄模塊主要是使用用戶名和密碼等方式使不同級別的用戶擁有不同的權限,從而有效的實現(xiàn)安全控制,使非法用戶不能進入系統(tǒng)。
播放模塊包括本地播放和遠程播放等功能。視頻文件的播放是采用DirectShow實現(xiàn)的,由過濾器表管理器自動生成過濾器表來播放視頻文件。我們可以設計封裝一個類CMediaPlay,在該類中封裝許多函數(shù),比如播放視頻文件的PlayFromFile()函數(shù),控制播放的PausePlay()、ResumePlay()、StopPlay()等函數(shù)。
遠程下載模塊實現(xiàn)的主要功能是把遠程服務器(主控機)上的視頻文件等下載到本地客戶端。
實時傳輸模塊主要功能就是把主控計算機實時采集的視頻信號在基本不失真的情況下實時的傳輸?shù)桨l(fā)出實時傳輸請求的客戶端,并由播放模塊顯示出來。
遠程控制模塊的主要功能是在客戶端實現(xiàn)對主控服務器的部分控制。例如可以在客戶端實現(xiàn)對云臺和監(jiān)控效果的設置。其設計思想是對控制內容進行分類編碼,客戶端在編碼后邊加上控制參數(shù),然后把它傳輸?shù)椒掌鞫耍环掌鬟M程收到數(shù)據后,從中分解出編碼和參數(shù),然后調用相應的功能函數(shù)實現(xiàn)對目標的控制。在本模塊中由于傳輸?shù)氖强刂泼睿瑸楸WC傳輸?shù)目煽啃裕覀儾捎没赥CP協(xié)議的面向連接的通信方式。為了避免控制沖突,本模塊要求在任一時刻只允許一個用戶對云臺和監(jiān)控效果實施控制。因此在服務器端,對于這一端口只接受一個用戶的連接請求,一旦建立連接,則把在服務器端對這兩個部分的控制功能置為無效狀態(tài);當斷開連接后,再把它們恢復為有效狀態(tài)。為避免客戶端長時間處于控制狀態(tài)而導致其他用戶無法進入控制狀態(tài),在本模塊中置有一個定時器。當連接建立時啟動定時器,開始計時;當用戶按動鍵盤或鼠標任一鍵時,計時器歸零,重新開始計時;當計時器計到一定時間后,自動斷開連接并關閉控制對話框。
5 軟件設計關鍵技術
5.1 通信協(xié)議的選擇
TCP協(xié)議負責數(shù)據的流量控制,保證傳輸?shù)恼_性,具有數(shù)據重發(fā)功能,傳輸延遲造成抖動將使實時通信的質量嚴重下降,不適合實時通信。所以在INTERNET上傳送多媒體信息時,采用的都是UDP/IP協(xié)議,而UDP和IP均不提供鏈接保證,數(shù)據傳輸?shù)目煽啃詻]有保障。所以這里采用了應用比較廣泛的RTP/RTCP(實時傳輸協(xié)議/實時傳輸控制協(xié)議)。
RTP提供端對端網絡傳輸功能,適合通過組播傳送實時數(shù)據流,RTP報文格式中包括固定的RTP報文頭、可選用的作用標識(CSRC)和負載數(shù)據。RTP本身并不能為按順序傳送數(shù)據包提供可靠的傳送機制,也不提供流量控制和擁塞控制,它依靠RTCP提供這些服務。RTCP包的數(shù)量占所有傳輸量的百分之五。
視音頻流的網絡傳輸實現(xiàn)過程如下圖:
圖5 視音頻流的網絡傳輸封裝實現(xiàn)
在數(shù)據平面,服務器端將壓縮打包后的音頻、視頻數(shù)據按照RTP的報文格式裝入RTP報文的數(shù)據負載段,同時配置RTP報文頭部的時間戳、同步信息、序列號等重要參數(shù),此時的數(shù)據報文已經具有典型的時間特征,即被“流化”了。在UDP/TCP層,RTP報文作為負載數(shù)據裝入UDP/TCP報文中,最后,由IP層負責最后的報文頭部配置,實現(xiàn)網絡傳輸。在客戶端,實現(xiàn)方式相反,各網絡層依次去除報文頭部,并讀取相關的控制參數(shù)和時間參數(shù),最終獲取可以實時播放的音頻,視頻數(shù)據。
5.2組播技術
如果用單播傳輸技術來實現(xiàn)監(jiān)控視頻的多點傳輸,則需要在發(fā)送者和每個接受者之間占用單獨的數(shù)據信道來傳輸數(shù)據量巨大的實時視頻數(shù)據,這將導致發(fā)送者負擔沉重、延遲長、網絡擁塞。而采用廣播又極易造成網絡帶寬的大幅占用,影響整個網絡的通信效率。IP組播技術是目前能夠最大限度地利用現(xiàn)有網絡帶寬資源的一種有效方法。
組播指的是在INTERNET上對一組IP站點進行數(shù)據發(fā)送,所有加入該組的接收者都可以接收到該信息。這一組IP站點是動態(tài)形成的,每一個IP站點都是可以動態(tài)地加入或退出。 每臺主機可以同時加入到多個組中。IGMP是IP組播通信專用的INTERNET組管理協(xié)議,用于管理組成員加入或脫離組播組。
5.3 Winsock對組播技術的實現(xiàn)
Winsock是一個基于socket模型的Windows API集, Windows Sockets API是Windows的網絡程序設計接口,Windows Socket 規(guī)范定義并記錄了如何使用API與互聯(lián)網協(xié)議簇鏈接,支持流套接字和數(shù)據套接字。應用程序調用Windows Sockets API實現(xiàn)相互之間的通信,Windows Sockets又利用下層的網絡通信協(xié)議功能和操作系統(tǒng)調用實現(xiàn)實際的通信工作。
Winsock包括Winsock1和Winsock2兩種類型,每一種類型都定義了一組應用程序IP組播接口函數(shù),在實際的編程應用中。可通過Winsock提供的一系列應用程序接口來實現(xiàn)IP組播。本系統(tǒng)采用Winsock1實現(xiàn)IP組播通信,主要過程如下:
(1) 用Socket函數(shù)創(chuàng)建一個數(shù)據報套接字;
(2) 如果從組播組內接收數(shù)據,則利用Bind函數(shù)將套接字關聯(lián)到一個本地端口上;這里要注意的是:不要采用小于 1024的端口號,因為所有小于1024的端口號都被系統(tǒng)保留。在沒有被別的程序使用的情況下,可以選擇從1024 到65535的端口。如果只發(fā)送數(shù)據,則不需要這一步;
(3) 采用IP Multicast-TIL,調用setsocketopt函數(shù)設置TIL;
(4) 設置IP Add Membership選項和要加入的組播組地址結構,調用setsocketopt函數(shù)加入指定的組播組;如打算只發(fā)送數(shù)據,則不必加入一個播組;
(5) 調用Sendto函數(shù)發(fā)送組播數(shù)據,調用RecvFrom函數(shù)接收組播數(shù)據;
(6) 設置IP-Drop-Membership選項和要脫離的組播組地址結構,調用setsocketopt函數(shù)脫離指定的組播組;
6 結語
隨著互聯(lián)網技術的發(fā)展,人們對遠程監(jiān)控系統(tǒng)的圖像和聲音質量都提出了更高的要求,本系統(tǒng)不但能提供良好的畫面質量,而且能提供音質極佳的聲音,該系統(tǒng)具有結構合理、功能完善、運行可靠等特點,能夠廣泛應用于銀行、倉庫、居民小區(qū)等場合的安防監(jiān)控和電力電站、電信基站等無人值守場合。
參考文獻:
[1] 劉富強. 數(shù)字視頻監(jiān)控系統(tǒng)開發(fā)及應用. 北京:機械工業(yè)出版社,2003 .
[2] (美)Jones A,Ohlund J. Windows網絡編程技術[M]. 京京工作室譯. 北京:機械工業(yè)出版社,2000.
[3] 王汝言. 多媒體通信技術[M]. 西安:西安電子科技大學出版社,2004.
[4] 黎洪松. 數(shù)字視頻技術及其應用[M]. 北京:清華大學出版社,1997.