王志力 李瑩
摘 要: 提出一種基于視頻管理系統(tǒng)的開放式架構(gòu)平臺的解決方案,提高了視頻監(jiān)控系統(tǒng)的擴(kuò)展性、兼容性,該系統(tǒng)可以有效地與其他平臺、站點(diǎn)進(jìn)行集成和融合。通過實際的開發(fā)測試論證了基于視頻管理系統(tǒng)的開放式架構(gòu)解決方案的合理性,系統(tǒng)采用Web Services開發(fā)的視頻監(jiān)控接口,實現(xiàn)了各個平臺站點(diǎn)間的互聯(lián),使各個單元之間更加容易銜接,對于視頻監(jiān)控系統(tǒng)的集成能力以及項目后期的擴(kuò)展性和兼容性具有指導(dǎo)和借鑒意義。
關(guān)鍵詞: 視頻監(jiān)控; Web Services; VSIP協(xié)議; OCX控件
中圖分類號: TN948.64?34; TM417 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2017)03?0015?04
Design of Web?based video management system under open architecture
WANG Zhili, LI Ying
(Jilin Medical University, Jilin 132013, China)
Abstract: An open architecture platform solution based on the video management system is proposed, which can improve the scalability and compatibility of the video monitoring system, and integrate and fuse the system with other platforms and sites effectively. The rationality of the open architecture solution based on video management system was verified with the practical development and testing. The video surveillance interface developed with Web Services is used in the system to connect the sites among each platform, make each unit easy joining, and has the guidance and reference significance for the integration capability of the video monitoring system and project subsequent scalability and compatibility.
Keywords: video surveillance; Web Services; VSIP protocol; OCX component
隨著數(shù)字化、網(wǎng)路化對于整個監(jiān)控行業(yè)的推動,監(jiān)控系統(tǒng)進(jìn)入了更加高速的發(fā)展階段,為整個安防行業(yè)的發(fā)展提供了更加廣闊的發(fā)展空間,與此同時,越來越多的領(lǐng)域都使用了視頻監(jiān)控系統(tǒng),特別是高科技遠(yuǎn)程視頻監(jiān)控系統(tǒng)[1]。網(wǎng)絡(luò)視頻監(jiān)控的飛速發(fā)展給生活帶來安全保障的同時,也出現(xiàn)了它自身的缺陷。因此,有必要研發(fā)一種開放的視頻監(jiān)控平臺,完成系統(tǒng)之間的跨語言、跨平臺對接。
1 視頻開放平臺的總體設(shè)計
1.1 設(shè)計思想
基于視頻管理系統(tǒng)的開放平臺使用戶可以簡單方便地實現(xiàn)對視頻監(jiān)控區(qū)域的實時瀏覽,云臺控制等功能,用戶也可以根據(jù)該平臺給出的相關(guān)接口進(jìn)行二次開發(fā),該平臺給出的接口邏輯功能部分已經(jīng)實現(xiàn),只需要根據(jù)接口的規(guī)定傳輸數(shù)據(jù)即可。整個系統(tǒng)的工作過程如下:用戶可以在瀏覽器下輸入對應(yīng)的訪問地址,按照提示輸入用戶名、密碼和服務(wù)器IP,若三者有一項錯誤,則登錄失敗,需要重新登錄;若登錄成功,則可根據(jù)服務(wù)器返回的句柄進(jìn)行相關(guān)操作。該平臺提供的接口邏輯部分已實現(xiàn),并對外部做出了接口的說明,所以平臺的整個實現(xiàn)中并沒有包括客戶端前端的編寫。
1.2 工作原理
在設(shè)計的開放式架構(gòu)中,依托VMS服務(wù)器設(shè)計了一套Web Services接口,它能夠?qū)崿F(xiàn)平臺管理,設(shè)備管理,監(jiān)控業(yè)務(wù)展現(xiàn),存儲管理等功能,能夠?qū)崿F(xiàn)平臺對接,讓第三方平臺通過調(diào)用Web Services接口從服務(wù)器獲取數(shù)據(jù)流。在本平臺下搭建的Web Services接口的服務(wù)對象只包含VMS服務(wù)器,并不包含前端設(shè)備。在Web Services內(nèi)部邏輯實現(xiàn)上主要用到了異步通信機(jī)制和VSIP協(xié)議。
1.2.1 異步通信工作原理
異步通信就是當(dāng)前線程在執(zhí)行時,需要外部I/O設(shè)備進(jìn)行硬盤讀寫,網(wǎng)絡(luò)通信等,但是外部設(shè)備I/O的速度與CPU的速度相差太遠(yuǎn),所以沒有必要等待I/O操作完成后再執(zhí)行后續(xù)的代碼。所以當(dāng)前線程就將這個I/O操作的請求交給設(shè)備驅(qū)動去處理,而本身去執(zhí)行其他的任務(wù)。異步通信進(jìn)行網(wǎng)絡(luò)操作時,主線程并沒有掛起,而是繼續(xù)執(zhí)行任務(wù),等到網(wǎng)絡(luò)操作完成了,給出一個網(wǎng)絡(luò)操作完成的通知,所以異步通信是一個明顯的并行操作過程[2]。異步通信模式無疑比阻塞和多線程的模式效率要高很多。
1.2.2 VSIP協(xié)議工作原理
VSIP協(xié)議不是替代現(xiàn)行的通信協(xié)議,IP安全標(biāo)準(zhǔn)以及壓縮算法,而是將實際中使用的標(biāo)準(zhǔn)通過一套規(guī)則整合在一起使用,在該協(xié)議中涉及的概念有GUID,VSIP應(yīng)用和VSIP單元。GUID是一個標(biāo)識符,它以單元為單位,對VSIP網(wǎng)絡(luò)中的單元和單元的功能進(jìn)行標(biāo)示,由于使用了單元的MAC地址作為標(biāo)記,所以對于每一個標(biāo)示符都是惟一的。VSIP應(yīng)用是指通過VSIP協(xié)議開發(fā)的上層系統(tǒng)應(yīng)用軟件。VSIP單元是指利用VSIP開發(fā)的設(shè)備單元。VSIP協(xié)議實質(zhì)上就是系統(tǒng)的應(yīng)用軟件通過向設(shè)備單元發(fā)出一些命令和控制請求消息,在發(fā)現(xiàn)設(shè)備單元之后接收設(shè)備單元響應(yīng)信息的過程。
1.2.3 OCX控件工作原理
在Web Services的內(nèi)部實現(xiàn)上封裝了很多可用的視頻監(jiān)控客戶端需要的接口信息,通過該接口的實現(xiàn)信息可以開發(fā)OCX控件,用于在客戶端獲取視頻監(jiān)控信號,然后在Web頁面上嵌入相應(yīng)的OCX控件的代碼,當(dāng)用戶第一次用網(wǎng)頁登錄時,提示下載安裝OCX控件,下載安裝完成后,用戶可以通過用戶名、密碼登陸系統(tǒng),查看視頻的實時瀏覽、實時控制等相關(guān)功能。
1.3 開發(fā)框架的選擇
目前企業(yè)開發(fā)Web Services的主流框架有兩種,[.NET]框架和J2EE框架[3]。針對多層的分布式應(yīng)用,兩種框架都能夠在Web Services的設(shè)計、集成以及安全可靠性能方面提供很多的指導(dǎo)和規(guī)范。
由于本文主要的任務(wù)是開發(fā)一種供視頻監(jiān)控系統(tǒng)和其他應(yīng)用程序或者子系統(tǒng)相連接的Web Services接口,所以主要看兩者對Web Services的支持力度[4]。從兩者對Web Services的支持力度出發(fā),主要從四個方面來比較,即前文中提到的服務(wù)實現(xiàn)、服務(wù)調(diào)用和執(zhí)行、服務(wù)描述、服務(wù)發(fā)布、發(fā)現(xiàn)和綁定。具體的比較信息見表1。
1.4 平臺模塊組成
在整個Web Services接口設(shè)計中,復(fù)雜部分邏輯主要在內(nèi)部實現(xiàn),外部的調(diào)用者不需要知道內(nèi)部實現(xiàn)的具體邏輯即可調(diào)用[5]。在Web Services的設(shè)計實現(xiàn)中,主要包含的設(shè)計部分如圖1所示。
1.4.1 異步通信模塊設(shè)計
使用完成端口的機(jī)制實現(xiàn)異步通信,完成端口的設(shè)計當(dāng)中主要包括創(chuàng)建Socket套接字、創(chuàng)建綁定完成端口,監(jiān)控完成端口,接收數(shù)據(jù),發(fā)送數(shù)據(jù),關(guān)閉完成端口。每次通信過程實現(xiàn)完成端口的異步通信模式都要通過這幾步來完成。
1.4.2 VSIP協(xié)議模塊設(shè)計
該模塊主要利用VSIP協(xié)議對接收和發(fā)出的數(shù)據(jù)進(jìn)行封裝、解析、加密和解密。通過解密的數(shù)據(jù)再由VSIP協(xié)議解析后發(fā)送給業(yè)務(wù)邏輯層,邏輯層將傳入的數(shù)據(jù)經(jīng)過VSIP進(jìn)行封裝,再經(jīng)過加密之后交給通信層發(fā)送。
1.4.3 業(yè)務(wù)邏輯模塊設(shè)計
邏輯業(yè)務(wù)模塊主要包含提供給各個子模塊調(diào)用的系統(tǒng)接口,調(diào)用這些接口可以很好地實現(xiàn)實時瀏覽、云臺控制、鏡頭ID獲取,用戶管理、報警模塊、參數(shù)配置、前端設(shè)備參數(shù)等。
2 視頻開放平臺部分功能的具體實現(xiàn)
2.1 協(xié)議通信層的具體實現(xiàn)
2.1.1 協(xié)議模塊的消息定義
在協(xié)議通信模塊中主要通過完成端口的異步通信模式實現(xiàn)通信[6]。先通過VSIP協(xié)議將數(shù)據(jù)進(jìn)行數(shù)據(jù)封裝、加密、解密以及數(shù)據(jù)解析等操作,然后通過異步通信的方式將數(shù)據(jù)包發(fā)送出去。
2.1.2 通信模塊的結(jié)構(gòu)體定義
選取I/O完成端口的通信方式。實現(xiàn)完成端口的步驟主要包含開始連接,開啟接收線程,發(fā)送數(shù)據(jù)包,接收數(shù)據(jù)包,關(guān)閉完成端口,在.NET環(huán)境下完成端口的具體實現(xiàn)步驟如下:
(1) 首先,創(chuàng)建SocketAsyncEventArgs的類對象,并通過緩沖管理中心給該對象池中的對象分配緩沖大小。
(2) 創(chuàng)建服務(wù)器套接字,監(jiān)聽并接收基于Socket?AsyncEventArgs類對象的客戶端連接。
(3) 如果有來訪連接,接收對象取得控制權(quán)之后就開始接收數(shù)據(jù)。
2.2 多線程的具體實現(xiàn)
在本開放平臺中,為了保證各個模塊能夠很好的配合工作,使用了多線程機(jī)制以保證程序的高效性。在本開放式平臺中,包含以下線程:心跳連接,消息控制,視頻碼流,視頻解碼線程,視頻顯示,音頻碼流,音頻解碼,音頻播放,錄像下載以及消息通知。各種線程都是以消息控制線程為中心,具體線程關(guān)系圖如圖2所示。
(1) 心跳連接。為了保證程序與服務(wù)器之間的穩(wěn)定連接,需在約定的時間內(nèi)由程序向服務(wù)器發(fā)送一個判斷套接字連接是否正常的消息包,即心跳包[7]。服務(wù)器通過在規(guī)定的時間內(nèi)是否收到心跳包來判斷連接狀態(tài)。通過心跳連接可以確保通信連接的可靠性和有效性。
(2) 線程控制。在程序開啟之后,控制線程就立即啟動。控制線程開啟以后,客戶可通過調(diào)用登錄接口創(chuàng)建具體的Socket連接,連接成功之后,就可以監(jiān)聽視頻監(jiān)控服務(wù)器返回的消息。
(3) 音視頻碼流。在整個視頻監(jiān)控系統(tǒng)中,最重要的是視頻監(jiān)控畫面的展示,可能還會伴隨聲音的輸出。視頻監(jiān)控畫面的實時展示涉及到視頻流的獲取,所以在視頻監(jiān)控系統(tǒng)中,需要為視頻碼流的獲取單獨(dú)開啟一個線程,音頻也同樣如此。
(4) 消息通知。視頻監(jiān)控系統(tǒng)中,在很多情況下有很多用戶登錄服務(wù)器,為了保持用戶數(shù)據(jù)能夠同步而不發(fā)生混淆,單獨(dú)開啟一個消息通知線程。通過服務(wù)器及時推送某些被更改信息的通知,根據(jù)通知消息的類型做出不同的操作。
(5) 錄像下載。有時用戶需要看以前的錄像內(nèi)容,而這些內(nèi)容被保存在磁盤中,所以用戶會根據(jù)需要下載指定時間段的錄像內(nèi)容,當(dāng)用戶調(diào)用錄像下載函數(shù)時,則會馬上開啟錄像下載線程,線程開啟之后,視頻監(jiān)控服務(wù)器會給用戶發(fā)送錄像文件碼流,并根據(jù)用戶設(shè)置的保存路徑保存錄像文件。
2.3 業(yè)務(wù)邏輯模塊的具體實現(xiàn)
2.3.1 服務(wù)器級別模塊設(shè)計
由于在本設(shè)計中,開發(fā)的Web Services主要是為外部調(diào)用,而在其內(nèi)部實現(xiàn)方式上主要是和VMS服務(wù)器[7]交互,因此在業(yè)務(wù)邏輯部分有很多的模塊設(shè)計都是與服務(wù)器相關(guān)的,主要包含服務(wù)器版本信息獲取、登陸和注銷服務(wù)器、服務(wù)器時間獲取、得到服務(wù)器句柄和IP,獲取服務(wù)器的使用模式等。與服務(wù)器相關(guān)的接口框架設(shè)計如圖3所示。
2.3.2 用戶管理及權(quán)限模塊設(shè)計
用戶管理模塊主要是為了對登錄的用戶進(jìn)行管理和權(quán)限設(shè)置,主要包括用戶管理和用戶權(quán)限配置兩個部分。用戶管理模塊的主要關(guān)系如圖4所示。
2.3.3 云臺控制模塊設(shè)計
云臺控制模塊是針對具有云臺的IP攝像機(jī)。云臺用來連接攝像機(jī)和支架,內(nèi)置解碼器,云臺除了具有在水平和垂直方向運(yùn)動的功能外,它還遵循云臺控制的標(biāo)準(zhǔn)協(xié)議,通過外部信號的控制實現(xiàn)指定速度的水平和垂直運(yùn)動,光圈和焦距調(diào)節(jié)等功能[8]。在本平臺中,云臺控制模塊主要包含云臺控制臺的運(yùn)動,預(yù)置位信息的設(shè)置、輔助項信息的設(shè)置以及云臺的絕對運(yùn)動,如圖5所示。
2.3.4 報警模塊設(shè)計
報警模塊主要負(fù)責(zé)監(jiān)聽報警設(shè)備產(chǎn)生的報警信息,通知視頻監(jiān)控系統(tǒng),它是視頻監(jiān)控系統(tǒng)的重要組成部分。報警模塊主要包含獲取報警單元、設(shè)置和獲取報警單元的信息、設(shè)置開關(guān)量報警單元、添加報警計劃、查詢報警計劃等內(nèi)容。報警模塊的主要組成部分如圖6所示。
3 開放平臺的總體測試
3.1 測試內(nèi)容
3.1.1 實時瀏覽功能測試
本模塊的測試步驟如下:
(1) 通過IE瀏覽器訪問視頻監(jiān)控平臺的地址。
(2) 下載OCX播放控件并安裝。
(3) 登陸視頻監(jiān)控平臺。
(4) 選擇播放主界面中的一個播放通道。
(5) 雙擊左側(cè)鏡頭列表中的一個在線鏡頭,在播放通道內(nèi)觀察是否有視頻顯示。
預(yù)期結(jié)果:雙擊鏡頭列表中的一個在線鏡頭后,在播放通道內(nèi)會顯示正在監(jiān)控的視頻畫面。若鏡頭是離線的,則在播放通道內(nèi)無結(jié)果顯示。經(jīng)測試,發(fā)現(xiàn)實際結(jié)果與預(yù)期結(jié)果一致。
3.1.2 云臺控制功能測試
云臺控制模塊的測試步驟如下:
(1) 通過IE瀏覽器訪問視頻監(jiān)控平臺的地址。
(2) 下載OCX播放控件并安裝。
(3) 登陸視頻監(jiān)控平臺。
(4) 選擇播放主界面中的一個播放通道。
(5) 雙擊左側(cè)鏡頭列表中具有云臺標(biāo)志的在線鏡頭,在播放通道內(nèi)觀察是否有視頻顯示。
(6) 在左側(cè)頁面分別點(diǎn)擊上、下、左、右四個按鈕,測試云臺在這四個方向上的運(yùn)動并觀測播放通道內(nèi)視頻監(jiān)控場景的變化。
預(yù)期結(jié)果:選中具有云臺標(biāo)志的鏡頭后,點(diǎn)擊上、下、左、右四個按鈕,播放通道里面的視頻畫面會向著對應(yīng)的方向運(yùn)動,對于沒有云臺的鏡頭,點(diǎn)擊云臺控制按鈕,視頻監(jiān)控場景不會發(fā)生變化。經(jīng)過測試,發(fā)現(xiàn)實際的結(jié)果與預(yù)期結(jié)果相一致。
3.1.3 多窗口播放功能測試
多窗口播放模塊的測試步驟如下:
(1) 通過IE瀏覽器訪問視頻監(jiān)控平臺的地址。
(2) 下載OCX播放控件并安裝。
(3) 登陸視頻監(jiān)控平臺。
(4) 選擇播放主界面中的一個播放通道。
(5) 分別點(diǎn)擊監(jiān)控界面下方的1,4,9按鈕。
(6) 選擇沒有播放視頻的通道,雙擊監(jiān)控界面左側(cè)列表中的鏡頭,觀測監(jiān)控畫面的變化。
預(yù)期結(jié)果:點(diǎn)擊1,4,9按鈕后,監(jiān)控界面的播放通道會跟著變化,選擇其中一個播放通道,再點(diǎn)擊列表的一個鏡頭后,該播放通道就會顯示對應(yīng)鏡頭的監(jiān)控場景。經(jīng)過測試,發(fā)現(xiàn)實際的結(jié)果與預(yù)期結(jié)果相一致。
3.1.4 錄像檢索功能測試
錄像檢索模塊的測試步驟如下:
(1) 通過IE瀏覽器訪問視頻監(jiān)控平臺的地址。
(2) 下載OCX播放控件并安裝。
(3) 登陸視頻監(jiān)控平臺。
(4) 選擇播放主界面中的一個播放通道。
(5) 選擇一段時間內(nèi)的錄像資料。
(6) 在選擇好的錄像資料內(nèi)定位到時間點(diǎn),查看錄像資料。
預(yù)期結(jié)果:選取一個時間段后,通過選取該時間段內(nèi)的一個時間點(diǎn),可以很快定位到該時間點(diǎn)的畫面。經(jīng)過測試,發(fā)現(xiàn)實際的結(jié)果與預(yù)期結(jié)果相一致。
3.2 測試結(jié)果及分析
經(jīng)過一段時間的系統(tǒng)測試以及開放平臺的穩(wěn)定運(yùn)行,認(rèn)為該開放平臺的設(shè)計達(dá)到了設(shè)計目標(biāo),可以滿足用戶實際的基本需求。在測試的過程中,由于使用的測試客戶機(jī)配置比較陳舊,因此在開啟多路窗口播放監(jiān)控視頻時會出現(xiàn)畫面卡頓現(xiàn)象,測試在任務(wù)管理器中也可以看到CPU的占用率比較高,但是當(dāng)換一個配置稍高的客戶機(jī)時,畫面基本能夠保持流暢,若九路視頻同時播放還是有一定壓力的,占用的壓力相對來說也會比較高,但是總體來說,該開放平臺的接口能夠穩(wěn)定的工作,可靠性較高。
4 結(jié) 論
本文對基于視頻管理系統(tǒng)的開放式架構(gòu)進(jìn)行了分析設(shè)計。首先對視頻監(jiān)控中的常用架構(gòu)做了系統(tǒng)的闡述,并比較各自的優(yōu)缺點(diǎn),以Web Services結(jié)構(gòu)作為開發(fā)的技術(shù)架構(gòu),然后選擇.NET框架作為系統(tǒng)框架對系統(tǒng)進(jìn)行總體設(shè)計和具體實現(xiàn)。最后利用IE客戶端對已經(jīng)開發(fā)出的Web Services接口進(jìn)行調(diào)用和測試,測試結(jié)果顯示,開放平臺的接口能夠穩(wěn)定有效的運(yùn)行,能夠很好地支持客戶端實現(xiàn)視頻監(jiān)測的功能。
參考文獻(xiàn)
[1] 楊建全,梁華,王成友.視頻監(jiān)控技術(shù)的發(fā)展與現(xiàn)狀[J].現(xiàn)代電子技術(shù),2006,29(21):84?88.
[2] 劉佩賢,韓海花,楊志強(qiáng),等.Web Services體系結(jié)構(gòu)和應(yīng)用研究[J].中國科技信息,2010(18):44?45.
[3] 袁寶良,張忠能,嚴(yán)學(xué)道.Microsoft.NET和J2EE架構(gòu)開發(fā)技術(shù)分析[J].計算機(jī)工程,2004(z1):91?93.
[4] 羅玲,白曉穎.Web服務(wù)技術(shù)分析[J].計算機(jī)科學(xué),2004(4):19?23.
[5] 容芷君,應(yīng)保勝,但斌斌.基于Web Services的設(shè)備管理系統(tǒng)的實現(xiàn)[J].武漢科技大學(xué)(自然科學(xué)版),2008,31(1):108?109.
[6] 劉磊,李連彬.Windows系統(tǒng)網(wǎng)絡(luò)通信層性能及方法研究[J].計算機(jī)應(yīng)用,2009,29(z2):4?7.
[7] 胡東紅,杜光海,賀偉,等.基于完成端口模型的應(yīng)用程序?qū)崿F(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2014,4(3):60?62.
[8] 張黨進(jìn),趙文靜.Web Services中權(quán)限管理的分析與實現(xiàn)[J].現(xiàn)代電子技術(shù),2006,29(5):62?63.