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