馬術(shù)聰,甘朝欽,華 健,夏瑋棟,謝偉倫
(上海大學(xué) 特種光纖與光接入網(wǎng)省部共建重點(diǎn)實(shí)驗(yàn)室,上海 200072)
基于ONVIF協(xié)議的設(shè)備發(fā)現(xiàn)及PTZ控制模塊的設(shè)計(jì)*
馬術(shù)聰,甘朝欽,華 健,夏瑋棟,謝偉倫
(上海大學(xué) 特種光纖與光接入網(wǎng)省部共建重點(diǎn)實(shí)驗(yàn)室,上海 200072)
與眾多網(wǎng)絡(luò)協(xié)議相比,ONVIF標(biāo)準(zhǔn)在網(wǎng)絡(luò)視頻安防領(lǐng)域以更好的兼容性、擴(kuò)展性和完善性贏得了很高的市場占有率。介紹ONVIF協(xié)議的內(nèi)容,分析ONVIF客戶端與服務(wù)端之間的通信過程。在通信模塊的設(shè)計(jì)過程中,首先利用Web Service實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)功能,并在此基礎(chǔ)上實(shí)現(xiàn)遠(yuǎn)端設(shè)備的云臺(tái)控制。測試結(jié)果表明,設(shè)計(jì)的ONVIF客戶端模塊接口可以發(fā)現(xiàn)局域網(wǎng)內(nèi)所有支持ONVIF協(xié)議的設(shè)備,并且實(shí)現(xiàn)遠(yuǎn)端設(shè)備的云臺(tái)控制。
ONVIF協(xié)議;Web Service;設(shè)備發(fā)現(xiàn);云臺(tái)控制
隨著科學(xué)技術(shù)的不斷發(fā)展和人民安全意識(shí)的不斷提高,市場對(duì)智能監(jiān)控產(chǎn)品的需求日益增加,工業(yè)界加大了智能監(jiān)控產(chǎn)品的研發(fā)投入。視頻監(jiān)控技術(shù)由來已久,其發(fā)展經(jīng)歷了模擬信息、數(shù)字信息和網(wǎng)絡(luò)信息三個(gè)不同的階段。數(shù)字化、高清化、網(wǎng)絡(luò)化是第三代視頻監(jiān)控系統(tǒng)的特征,但由于設(shè)備生產(chǎn)廠商開發(fā)產(chǎn)品采用的標(biāo)準(zhǔn)不同,導(dǎo)致社會(huì)資源不能有效整合。目前,在安防市場上主要有三個(gè)協(xié)議標(biāo)準(zhǔn),分別是PSIA(Physical Security Interoperability Alliance,實(shí)體安防互通聯(lián)盟)、HDcctv(High Definition Closed Circuit Television,高清閉路電視)和ONVIF接口論壇。其中,ONVIF采用更加靈活的分布式網(wǎng)絡(luò)服務(wù)架構(gòu),解決了不同監(jiān)控產(chǎn)品和監(jiān)控平臺(tái)之間的互通問題。此外,相比于其他標(biāo)準(zhǔn),ONVIF內(nèi)容更完備,成熟度更高,最大程度上滿足了所有的監(jiān)控需求。
本文對(duì)ONVIF規(guī)范的實(shí)現(xiàn)方式進(jìn)行研究,并在此基礎(chǔ)上對(duì)設(shè)備發(fā)現(xiàn)和PTZ控制兩個(gè)監(jiān)控模塊接口進(jìn)行分析,明確了實(shí)現(xiàn)模塊接口的開發(fā)流程。同時(shí),使用gSOAP開發(fā)工具完成了設(shè)備發(fā)現(xiàn)和PTZ控制模塊接口實(shí)現(xiàn),并通過功能測試驗(yàn)證了接口的有效性。
ONVIF規(guī)范描述了網(wǎng)絡(luò)視頻的接口、模型、數(shù)據(jù)類型以及數(shù)據(jù)交互的模式。2008年5月,Axis、Bosch和Sony三家公司宣布共同成立一個(gè)國際開放型網(wǎng)絡(luò)視頻產(chǎn)品標(biāo)準(zhǔn)網(wǎng)絡(luò)接口開發(fā)論壇,命名為ONVIF(開放型網(wǎng)絡(luò)視頻接口論壇),并以公開、開放的原則共同制定開放性行業(yè)標(biāo)準(zhǔn)。ONVIF標(biāo)準(zhǔn)定義的是網(wǎng)絡(luò)視頻客戶端和視頻傳輸設(shè)備的通信規(guī)范,是網(wǎng)絡(luò)視頻設(shè)備之間的信息交換通用協(xié)議。這個(gè)新的規(guī)范可以使不同廠商提供的產(chǎn)品通過一種統(tǒng)一的接口進(jìn)行通信,并逐漸成為新的行業(yè)標(biāo)準(zhǔn)。
ONVIF是適用于局域網(wǎng)和廣域網(wǎng)網(wǎng)絡(luò)視頻的使用案例。規(guī)范始于一個(gè)核心套接口函數(shù)配置和通過定義它們的服務(wù)類接口,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)視頻設(shè)備的控制。目前,ONVIF規(guī)范正在不斷擴(kuò)展和完善。ONVIF框架涵蓋了不同網(wǎng)絡(luò)視頻應(yīng)用環(huán)境的各個(gè)階段。接口包括設(shè)備發(fā)現(xiàn)、設(shè)備管理、設(shè)備配置、事件、PTZ控制(云臺(tái)方位控制,光圈變焦)、視頻分析及控制、回放、存儲(chǔ)和錄像管理等功能。
ONVIF協(xié)議模塊接口的實(shí)現(xiàn)機(jī)制:根據(jù)官方提供或自己擴(kuò)展的WSDL描述文件,ONVIF客戶端生成一個(gè)SOAP請(qǐng)求消息;該消息會(huì)被添加到一個(gè)HTTP POST請(qǐng)求中,發(fā)送到包含對(duì)應(yīng)Web Service的Web服務(wù)器;Web Service服務(wù)器處理SOAP請(qǐng)求,生成對(duì)應(yīng)的SOAP應(yīng)答;Web服務(wù)器得到SOAP應(yīng)答后,通過HTTP把應(yīng)答消息送回客戶端[1]。
ONVIF的提出推動(dòng)了網(wǎng)絡(luò)視頻監(jiān)控行業(yè)的發(fā)展。ONVIF規(guī)范以其兼容性和開放性,提高了解決方案的靈活性。ONVIF規(guī)范的目標(biāo)是實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)視頻框架協(xié)議,使不同廠商所生產(chǎn)的網(wǎng)絡(luò)視頻產(chǎn)品完全互通[2]。
視頻監(jiān)控系統(tǒng)主要分為客戶端視頻監(jiān)控平臺(tái)和遠(yuǎn)端設(shè)備服務(wù)端兩大部分。根據(jù)視頻監(jiān)控系統(tǒng)監(jiān)控需求和ONVIF協(xié)議標(biāo)準(zhǔn)所包含的內(nèi)容,設(shè)計(jì)的視頻監(jiān)控平臺(tái)接口主要有設(shè)備發(fā)現(xiàn)接口、設(shè)備管理接口、云臺(tái)控制接口、圖像配置接口、媒體配置接口、視頻分析接口、事件處理接口、報(bào)警接口。
ONVIF客戶端與ONVIF服務(wù)端的交互通信方式:客戶端發(fā)送Probe報(bào)文(或以組播的形式)給前端服務(wù)設(shè)備,服務(wù)端接收到請(qǐng)求后,返回自身的通訊地址IP;客戶端根據(jù)設(shè)備IP發(fā)送Get Services獲取service信息,發(fā)送Get Profiles獲取mediaprofiles信息,發(fā)送Get streamUri信息獲取視頻流地址。客戶端所有操作都是基于此流程進(jìn)行通信的。
本章主要分析設(shè)備發(fā)現(xiàn)和PTZ控制模塊接口的實(shí)現(xiàn)流程,從而為模塊的開發(fā)實(shí)現(xiàn)作理論鋪墊。
2.1 設(shè)備發(fā)現(xiàn)模塊
ONVIF協(xié)議定義的配置接口都是基于WSDiscovery標(biāo)準(zhǔn)的Web服務(wù)接口。WS-Discovery標(biāo)準(zhǔn)能夠?qū)崿F(xiàn)重復(fù)使用一個(gè)適合的現(xiàn)有Web發(fā)現(xiàn)服務(wù)框架。
在進(jìn)行設(shè)備發(fā)現(xiàn)時(shí),客戶端會(huì)發(fā)送Probe探測消息進(jìn)行多播;設(shè)備端接受消息,判斷是否匹配,匹配則發(fā)送一個(gè)單播的探測響應(yīng)消息給客戶端,響應(yīng)發(fā)現(xiàn)目標(biāo)服務(wù)。一個(gè)成功的發(fā)現(xiàn)會(huì)提供設(shè)備服務(wù)地址。客戶端接收設(shè)備的地址,就能通過設(shè)備服務(wù)接收詳細(xì)的設(shè)備信息,實(shí)現(xiàn)客戶端對(duì)服務(wù)端的交互控制。在設(shè)備發(fā)現(xiàn)接口設(shè)計(jì)中,服務(wù)端與客戶端的信息通信方式如圖1所示。
圖1 設(shè)備發(fā)現(xiàn)服務(wù)端與客戶端的交互
客戶端與服務(wù)端信息交互主要包括Hello、Bye、Probe、Probe Match四個(gè)消息。
當(dāng)服務(wù)設(shè)備加入工作網(wǎng)絡(luò)后,組播發(fā)送Hello消息到組播地址239.255.255.250:3702。該消息主要包括設(shè)備類型、設(shè)備服務(wù)地址和設(shè)備范圍。同一網(wǎng)絡(luò)中的客戶端如NVC,監(jiān)聽到Hello消息后,組播發(fā)送Probe消息進(jìn)行設(shè)備搜索。服務(wù)設(shè)備收到Probe探索消息便進(jìn)行解析,如果探索消息中設(shè)備類型以及作用域和自身設(shè)備的相應(yīng)信息匹配,則返回響應(yīng)消息。當(dāng)服務(wù)設(shè)備離開工作網(wǎng)絡(luò)時(shí),發(fā)送Bye消息通知網(wǎng)絡(luò)中的客戶端設(shè)備離線。
Probe報(bào)文指定搜索的設(shè)備類型Types。Probe報(bào)文中Message ID為該報(bào)文的唯一標(biāo)識(shí)。如果遠(yuǎn)端設(shè)備接收消息,則匹配成功,記錄Probe報(bào)文的Message ID,創(chuàng)建Probe Match報(bào)文的Message ID。它使用UUID唯一標(biāo)識(shí),發(fā)送Probe Match報(bào)文進(jìn)行響應(yīng)。這樣網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)根據(jù)Message ID知道響應(yīng)的是哪一個(gè)Probe請(qǐng)求。Probe Match報(bào)文中XAddrs表示設(shè)備的服務(wù)地址服務(wù)地址是客戶端與遠(yuǎn)端設(shè)備進(jìn)行通信的橋梁。
2.2 云臺(tái)控制模塊
云臺(tái)控制主要服務(wù)的是支持ONVIF云臺(tái)服務(wù)的遠(yuǎn)端攝像頭設(shè)備。設(shè)計(jì)的主要目的是在客戶端上控制IPC的監(jiān)控方向,實(shí)現(xiàn)快速定位,速度控制、變焦、變倍,光圈控制等主要操作。ONVIF規(guī)范PTZ服務(wù)提供了絕對(duì)運(yùn)動(dòng)、相對(duì)運(yùn)動(dòng)和連續(xù)運(yùn)動(dòng)三種PTZ運(yùn)動(dòng)方式。每種運(yùn)動(dòng)方式對(duì)應(yīng)不同的坐標(biāo)空間[3]。從控制和靈活角度來看,持續(xù)移動(dòng)可以更好地滿足實(shí)時(shí)控制的需求。當(dāng)云臺(tái)轉(zhuǎn)動(dòng)到目標(biāo)區(qū)域后,發(fā)送停止命令,云臺(tái)停止移動(dòng)。本文采用的是連續(xù)移動(dòng)的云臺(tái)控制方式。
本次設(shè)計(jì)使用的是大華高清網(wǎng)絡(luò)高速智能球機(jī),水平角度旋轉(zhuǎn)范圍為[0°,360°],垂直角度旋轉(zhuǎn)范圍為[-2°,90°]。
云臺(tái)的控制指令采用國家監(jiān)控標(biāo)準(zhǔn)GB/T 28181標(biāo)準(zhǔn),PTZ指令格式如表1所示。
字節(jié)4中的Bit0、Bit1、Bit2、Bit3位分別控制云臺(tái)方位右、左、下、上方向的轉(zhuǎn)動(dòng),Bit4、Bit5分別控制鏡頭變倍的放大和縮小。相應(yīng)Bit位設(shè)置為1時(shí),啟動(dòng)云臺(tái)向相應(yīng)方向轉(zhuǎn)動(dòng);相應(yīng)Bit位設(shè)置為0時(shí),云臺(tái)停止操作。字節(jié)5控制云臺(tái)水平方向速度,速度范圍為[00H,F(xiàn)FH];字節(jié)6控制云臺(tái)垂直方向速度,速度范圍是[00H,F(xiàn)FH];字節(jié)7的高4位為鏡頭變倍速度,速度范圍是[0H,F(xiàn)H],低4位則為地址的高4位。
在客戶端實(shí)現(xiàn)云臺(tái)功能時(shí),實(shí)際是根據(jù)操作需求編程完成PTZ指令方向、速度、光圈等參數(shù)值,然后以PTZ指令流的形式封裝在請(qǐng)求消息中。服務(wù)端接收到消息后,根據(jù)具體參數(shù)響應(yīng)響應(yīng)操作。
PTZ配置原則遵循媒體配置方式,主要由三部分組成:PTZ Node用于管理PTZ設(shè)備和功能低級(jí)的PTZ實(shí)體;PTZ Configuration用于保存某個(gè)PTZ節(jié)點(diǎn)的PTZ配置;PTZ Control Operation用于PTZ預(yù)設(shè)和狀態(tài)操作。三者之間聯(lián)系如圖2所示。
圖2 PTZ節(jié)點(diǎn)
一個(gè)具有PTZ功能的NVT可能有一個(gè)或許多個(gè)PTZ節(jié)點(diǎn)。一個(gè)PTZ節(jié)點(diǎn)可以是一個(gè)機(jī)械PTZ設(shè)備驅(qū)動(dòng),也可以是一個(gè)上傳到視頻編碼器上的PTZ驅(qū)動(dòng)或是一個(gè)數(shù)字的PTZ設(shè)備驅(qū)動(dòng)。PTZ節(jié)點(diǎn)是PTZ控制中最低級(jí)的實(shí)體,指定支持的PTZ功能。
表1 PTZ字節(jié)位對(duì)應(yīng)的操作
ONVIF服務(wù)框架以Web服務(wù)為基礎(chǔ)。ONVIF規(guī)范中,設(shè)備發(fā)現(xiàn)和控制部分所定義的接口均以Web Services的形式提供。ONVIF規(guī)范包含了所 有 的 XML及 WSDL(Web Service Description Language)的定義,應(yīng)用于網(wǎng)絡(luò)視頻服務(wù)。每一個(gè)支持ONVIF規(guī)范的終端設(shè)備都要提供相應(yīng)功能的Web Service。服務(wù)端與客戶端的數(shù)據(jù)交互采用SOAP協(xié)議進(jìn)行傳輸。SOAP是一個(gè)基于XML的消息傳遞協(xié)議,對(duì)Web服務(wù)請(qǐng)求和應(yīng)答消息進(jìn)行SOAP封裝,形成SOAP請(qǐng)求和應(yīng)答消息,然后在網(wǎng)絡(luò)上進(jìn)行傳送。SOAP作為一種輕量級(jí)協(xié)議,可以實(shí)現(xiàn)分布式環(huán)境下結(jié)構(gòu)化信息[4]的交換。SOAP消息獨(dú)立于任何操作系統(tǒng)或協(xié)議,且可以使用各種不同的網(wǎng)絡(luò)傳輸協(xié)議進(jìn)行傳送。ONVIF定義了一致的SOAP消息傳輸協(xié)議,用于描述Web服務(wù)。本文設(shè)計(jì)的監(jiān)控平臺(tái)模塊的接口是在Web服務(wù)框架上根據(jù)具體要實(shí)現(xiàn)的服務(wù)進(jìn)行開發(fā)實(shí)現(xiàn)。
3.1 模塊接口的開發(fā)流程和開發(fā)工具gSOAP
ONVIF所有的管理和配置命令都是基于Web服務(wù)的。WSDL是一種XML格式文檔,它把Web服務(wù)描述成一組能夠操作面向文檔或者面向過程信息的端點(diǎn)。WSDL文檔由類型、消息、操作、端口類型、綁定、端口、服務(wù)及部分組成。ONVIF不同的接口服務(wù)內(nèi)容用XML語言描述。在具體開發(fā)過程中,開發(fā)人員根據(jù)WSDL的內(nèi)容制定對(duì)應(yīng)的Web Service。而在定制相應(yīng)功能的Web Service時(shí),需要使用具體的實(shí)現(xiàn)語言來描述,一般用JAVA語言或者是C++語言。本文使用C++語言進(jìn)行服務(wù)功能具體的開發(fā)。為了簡化開發(fā)工程,使用gSOAP工具[5]進(jìn)行開發(fā)。gSOAP隱藏了SOAP封包與解析的實(shí)現(xiàn)細(xì)節(jié)。編譯器可以將XML格式文件中數(shù)據(jù)類型轉(zhuǎn)換為實(shí)現(xiàn)語言代碼結(jié)構(gòu)實(shí)現(xiàn),開發(fā)人員無需過多考慮XML文件的打包與解析工作,從而專注于應(yīng)用程序邏輯[6]的開發(fā)。ONVIF web服務(wù)的開發(fā)流程如圖3所示。
首先,獲取ONVIF服務(wù)WSDL描述文檔(官網(wǎng)http://www.onvif.org下載所需WSDL 文件)。本文設(shè)備發(fā)現(xiàn)和云臺(tái)控制相對(duì)應(yīng)的WSDL文件為disovery.wsdl和ptz.wsdl兩個(gè)文件,利用gSOAP工具生成ONVIF框架代碼。不同設(shè)備需要實(shí)現(xiàn)的服務(wù)不同,需對(duì)應(yīng)選擇指定部分功能的WSDL文件。gSOAP開源工具包提供兩個(gè)程序完成工作:wsdl2h和soapcpp2。wsdl2h解析指定的WSDL文件,生成ONVIF服務(wù)接口和數(shù)據(jù)類型的頭文件;soapcpp2進(jìn)一步解析此頭文件生成真正的代碼框架,得到文件soapClient.cpp(帶有客戶端接口實(shí)現(xiàn)函數(shù))、soap Stub.h(帶有ONVIF命名空間的數(shù)據(jù)類型和服務(wù)接口描述的頭文件)、soapH.h、soapC.cpp(接口和數(shù)據(jù)的序列化和反序化)、soapServer.cpp(服務(wù)器例程)。將以上生成的文件拷貝到項(xiàng)目目錄下,同時(shí)將gSOAP工具包的運(yùn)行時(shí)庫文件stdsoap2.h和stdsoap2.cpp拷貝到當(dāng)前項(xiàng)目目錄下[7],以進(jìn)行業(yè)務(wù)的邏輯開發(fā)。
圖3 WEB Service開發(fā)流程
以設(shè)備發(fā)現(xiàn)為例。在Linux系統(tǒng)下,用于獲取頭文件和生成相應(yīng)可編譯代碼的開發(fā)命令為:
wsdl2h -o onvif.h -s -t typemap.dat remotediscovery.wsdl
soapcpp2 onvif.h -I gsoap/import(文件生成路徑)
命令參數(shù)-o說明指定生成的頭文件名,-s說明不使用STL代碼,-t指定typemap.dat文件,-l為引入路徑,onvif.h為生成文件名。gSOAP生成執(zhí)行文件的流程如圖4所示。
3.2 設(shè)備發(fā)現(xiàn)接口設(shè)計(jì)
根據(jù)前面的分析,使用gSOAP工具編譯獲得soapClient和soapServer等相關(guān)的頭文件和源文件;設(shè)備發(fā)現(xiàn)使用的是remotediscovery.wsdl;ONVIF的Discovery服務(wù)使用組播技術(shù)。客戶端通過發(fā)送組播消息,搜索處在同一網(wǎng)段內(nèi)所有支持ONVIF的設(shè)備。組播使用D類地址,按照ONVIF規(guī)范的要求,設(shè)備發(fā)現(xiàn)使用239.255.255.250:3702。ONVIF設(shè)備收到組播發(fā)送的soap消息后會(huì)進(jìn)行響應(yīng)。設(shè)備發(fā)現(xiàn)的流程如圖5所示。
圖4 gSOAP開發(fā)流程框架
圖5 設(shè)備發(fā)現(xiàn)的實(shí)現(xiàn)流程
根據(jù)流程,設(shè)備發(fā)現(xiàn)的實(shí)現(xiàn)步驟(代碼實(shí)現(xiàn))為:
(1) 定 義結(jié) 構(gòu) 體wsdd_ProbeType,_wsdd_ ProbeMatches,wsdd_ScopesType,SOAP_ENV__ Header變量,并根據(jù)具體情況,配置相關(guān)變量的參數(shù);
(2)設(shè)置命名空間,初始化soap環(huán)境變量,soap=soap_new(),soap_set_namespaces(soap,namespaces),soap_default_wsdd_ProbeType(soap, &req);
(3)綁定組播地址和端口,客戶端發(fā)送調(diào)用探測函數(shù),多播發(fā)送Probe消息。調(diào)用函數(shù)形式 為:result=soap_send_wsdd_Probe(soap,"soap. udp://239.255.255.250:3702", NULL, &req);
(4)根據(jù)返回值result,可判斷調(diào)用是否成功;
(5)判斷成功后,調(diào)用接收服務(wù)端響應(yīng)函數(shù)result=soap_recv_wsdd_ProbeMatches(soap,&resp),返回消息包含了設(shè)備IP和設(shè)備服務(wù)地址;
(6)根據(jù)需要,輸出我們想要得到的查詢結(jié)果。
在本文設(shè)計(jì)中,返回輸出的響應(yīng)參數(shù)有:xsd-unsignedInt,scopes item,QName:tdn,uuid,xsd:QName,wsa:ServiceNameType,anyType:endpoint,wsdd:UriListType,Xaddrs。
3.3 云臺(tái)控制接口設(shè)計(jì)
根據(jù)ONVIF規(guī)范,云臺(tái)控制服務(wù)對(duì)應(yīng)的WSDL文檔為ptz.wsdl。在實(shí)現(xiàn)遠(yuǎn)端PTZ控制前,需要配置PTZ的相關(guān)信息。PTZ配置是通過PTZ類來實(shí)現(xiàn)的。類內(nèi)主要方法有:
(1)獲取PTZ節(jié)點(diǎn)信息GetNodes(),主要參數(shù)有名稱、統(tǒng)一資源標(biāo)識(shí)符、絕對(duì)位置、相對(duì)位置、持續(xù)移動(dòng)、光圈信息等;
(2)獲取預(yù)置位列表信息GetPresets();
(3)設(shè)置預(yù)置位信息SetPreset();
(4)刪除預(yù)置位信息RemovePreset();
(5)調(diào)用預(yù)位置GotoPreset();
(6)持續(xù)移動(dòng)ContinuousMove();
(7)停止移動(dòng)Stop();
(8)獲取PTZ配置信息GetConfiguration();
(9)獲取PTZ配置范圍信息GetConfiguration Options();
(10)設(shè)置PTZ配置信息SetConfiguration()。
通過PTZ類內(nèi)方法,選擇性地獲取相關(guān)操作配置。云臺(tái)控制接口主要圍繞上述層面進(jìn)行開發(fā),相對(duì)應(yīng)的測試也主要圍繞這三大方面進(jìn)行。
云臺(tái)控制的核心代碼實(shí)現(xiàn)如下:
第一,創(chuàng)建ONVIF控制實(shí)例。
EncoderOnvifController=new EncoderOnvifControll er("admin","admin",options[0].c_str(),HK);
這里,使用的登錄用戶名稱和密碼為admin,option[0]為傳入的控制參數(shù),continuousMove需要設(shè)置PTZ的移動(dòng)方向、運(yùn)動(dòng)速度、光圈的變倍等參數(shù)。根據(jù)傳入option指令參數(shù),確定移動(dòng)方向、速度、光圈的放大和縮小以及光圈速度。
第二,根據(jù)得出的參數(shù)進(jìn)行相對(duì)移動(dòng)和停止動(dòng)作。x、y、zoom分別為遠(yuǎn)端設(shè)備的相對(duì)位置,ControlPTZ(vector<string> &options)。獲得控制參數(shù)后,調(diào)用持續(xù)移動(dòng)和停止移動(dòng)這兩大操作,對(duì)應(yīng)的代碼分別是:
3.4 ONVIF Server服務(wù)端接口設(shè)計(jì)
ONVIF Server服務(wù)端的主要任務(wù)是提供接口供客戶端調(diào)用,而客戶端的主要任務(wù)是根據(jù)需求設(shè)計(jì)相應(yīng)的調(diào)用函數(shù)。
本文設(shè)計(jì)的ONVIF服務(wù)端框架主要分兩個(gè)部分:一部分是接收數(shù)據(jù),解析數(shù)據(jù)的接口類Common類,以分析接收到的數(shù)據(jù),獲取將要執(zhí)行操作方法的名稱和參數(shù);另一部分是服務(wù)器處理的Server類,根據(jù)接收到的請(qǐng)求,啟用服務(wù)器處理線程。
Common類的函數(shù)實(shí)現(xiàn)形式為:
void AnalyseData(String Data, ref MethodInfo Method, ref XmlElement Req)
解析函數(shù),獲取Mothod的方法為:
Method=Assembly.Load("ONVIFControl"). GetType(className).GetMethod(methodname);
解析數(shù)據(jù),獲取請(qǐng)求方法Req的函數(shù)為:
nol=doucmentE.GetElementsByTagName("Data");
Req=nol[0].FirstChild as XmlElement;
第二部分為Sever服務(wù)端請(qǐng)求處理部分,Web服務(wù)是通過套接字(socket)的通信機(jī)制實(shí)現(xiàn)。在服務(wù)端,套接字和主機(jī)地址綁定,并對(duì)端口進(jìn)行監(jiān)聽,以等待客戶端的連接請(qǐng)求消息[8]。重點(diǎn)是啟用服務(wù)器監(jiān)聽和處理線程,將處理結(jié)果以數(shù)據(jù)流的形式返回給客戶端請(qǐng)求。
相關(guān)流程設(shè)計(jì):第一,開啟服務(wù)端線程,創(chuàng)建線程實(shí)例;第二,創(chuàng)建TcpListener進(jìn)行監(jiān)聽,監(jiān)聽客戶端的連接請(qǐng)求;第三,調(diào)用AcceptTcpClient(),獲取與一個(gè)客戶端的連接,它返回一個(gè)TcpClient類型實(shí)例賦給Socket類對(duì)象;第四,接收來自客戶端的數(shù)據(jù),交給服務(wù)器線程處理,處理完成后,服務(wù)器返回結(jié)果,關(guān)閉連接。
相關(guān)核心代碼實(shí)現(xiàn)有:
4.1 測試環(huán)境
本文監(jiān)控設(shè)備使用某安防廠商生產(chǎn)的高清網(wǎng)絡(luò)攝像頭;視頻監(jiān)控設(shè)備端和軟件客戶端連入同一局域網(wǎng)內(nèi);設(shè)備發(fā)現(xiàn)和云臺(tái)控制功能模塊的測試主要運(yùn)行在Linux操作系統(tǒng)下的eclipse集成開發(fā)環(huán)境;針對(duì)單獨(dú)接口完成測試;視頻監(jiān)控平臺(tái)客戶端運(yùn)行在Windows操作系統(tǒng)下;客戶端集成監(jiān)控平臺(tái)的所有模塊;通過客戶端查看視頻流信息,實(shí)現(xiàn)對(duì)云臺(tái)的直觀控制。
4.2 測試設(shè)備發(fā)現(xiàn)功能模塊
通過ONVIF測試工具,得知所使用的網(wǎng)絡(luò)攝像頭支持ONVIF設(shè)備,IPCamera端的服務(wù)已實(shí)現(xiàn),ONVIF測試效果則如圖6所示。
設(shè)備發(fā)現(xiàn)發(fā)送Probe請(qǐng)求在客戶端實(shí)現(xiàn),設(shè)備發(fā)現(xiàn)模塊在eclipse開發(fā)工具中的測試效果如圖7所示。
測試結(jié)果表明,設(shè)備發(fā)現(xiàn)模塊接口符合ONVIF協(xié)議的要求,通過發(fā)送Probe組播消息,獲得遠(yuǎn)端服務(wù)地址http://192.168.51.43/onvif/device_service和設(shè)備其他相關(guān)的soap消息。
4.3 測試云臺(tái)控制功能模塊
在Linux操作系統(tǒng)下,通過命令行的輸入來控制云臺(tái)PTZ的運(yùn)動(dòng)。客戶端調(diào)用指令為ControlPTZ 192.168.51.43 MediaProfile000 A500002901010100。指令192.168.51.43為遠(yuǎn)端設(shè)備IP地址,MediaProfile000為媒體配置文件流,A500002901010100為符合國標(biāo)PTZ指令的指令流。通過編解碼視頻流,可以查看返回的視頻流信息,效果圖如圖8所示。
圖6 ONVIF工具搜索結(jié)果
圖7 設(shè)備發(fā)現(xiàn)返回信息
圖8 解碼視頻流
綜合上述測試結(jié)果可知,本文設(shè)計(jì)的客戶端服務(wù)功能模塊接口能夠完成ONVIF協(xié)議的設(shè)備發(fā)現(xiàn)和PTZ控制功能,并能夠通過編解碼將視頻流傳回到客戶端,實(shí)現(xiàn)音視頻流查看。
本文研究基于ONVIF協(xié)議標(biāo)準(zhǔn)的視頻監(jiān)控平臺(tái)的服務(wù)模塊接口設(shè)計(jì),主要實(shí)現(xiàn)了設(shè)備發(fā)現(xiàn)和云臺(tái)控制這兩大主要部分的系統(tǒng)設(shè)計(jì)。測試結(jié)果表明,該設(shè)計(jì)很好地完成了對(duì)接口的開發(fā),實(shí)現(xiàn)了監(jiān)控平臺(tái)對(duì)應(yīng)模塊的功能,同時(shí)監(jiān)控平臺(tái)可以與不同設(shè)備廠商生產(chǎn)的網(wǎng)絡(luò)視頻產(chǎn)品實(shí)現(xiàn)互通。使用接入接口ONVIF標(biāo)準(zhǔn),視頻監(jiān)控平臺(tái)將不同廠商不同型號(hào)支持ONVIF標(biāo)準(zhǔn)的前端攝像機(jī)設(shè)備很方便地接入系統(tǒng)平臺(tái)中,節(jié)省了開發(fā)成本和維護(hù)成本。
[1] 陸嘉恒.Hadoop實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2011.LU Jia-heng.Hadoop Actual Combat[M].Beijing:China Machine Press,2011.
[2] 金巍.開放式網(wǎng)絡(luò)視頻接口協(xié)議研究[D].南京:南京大學(xué),2011:66-70. JIN Wei. Study on Open Network Video Interface Forum Protocol[D].Nanjing:Nanjing University,2011:66-70.
[3] 王永嘉.監(jiān)控系統(tǒng)—客戶端設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2009. WANG Yong-jia.Supervisory Control System-Design and Implementation of Client-side[D].Hangzhou:Zhejiang University,2009.
[4] Box D,Ehnebuske D,Kakivaya G.Simple Object Access Protocol(SOAP)1.1[S].W3C Note,2000(05):14-37.
[5] 殷停,王英,葉天強(qiáng).gSOAP在基于TR069協(xié)議的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2010,23(01):81-82. YIN Ting,WANG Ying,YE Tian-qiang.gSOAP Based on TR069 Protocol Network Video Monitoring System[J]. Industrial Control Computer,2010,23(01):81-82.
[6] Engelen R V.gSOAP 2.8.1 User Guide[R].2011:13-17.
[7] Aloisio G,Cafaro M,Lezzi D,et al.Secure Web Services With Globus GSI and gSOAP[C].Euro-Par 2003 Parallel Processing,Springer Berlin Heidelberg,2003:421-426.
[8] Matthew N,Stone R.Beginning Linux Programming[M]. UK:Wrox,2010:513-517.
馬術(shù)聰(1991—),男,碩士研究生,主要研究方向?yàn)楣饨尤刖W(wǎng);
甘朝欽(1963—),男,博士,教授,主要研究方向?yàn)楣饨尤刖W(wǎng);
華 ?。?992—),男,碩士研究生,主要研究方向?yàn)楣饨尤刖W(wǎng);
夏瑋棟(1991—),男,碩士研究生,主要研究方向?yàn)楣饨尤刖W(wǎng);
謝偉倫(1992—),男,碩士研究生,主要研究方向?yàn)楣饨尤刖W(wǎng)。
Design and Implementation of Device Discovery and PTZ Control Module in
Video Surveillance System based on ONVIF Protocol
MA Shu-cong,GAN Chao-qin,HUA Jian,XIA Wei-dong,XIE Wei-lun
(Key Laboratory of Specialty Fiber Optics and Optical Access Networks,School of Communication and Information Engineering,Shanghai University,Shanghai 200072,China)
Compared with many network protocols, ONVIF standards win a high market share in the field of video surveillance with better compatibility, scalability and integrity. This article describes the contents of ONVIF protocol, and analyzes the communication process between ONVIF client and server. In the design process of the communication module, web service is used to achieve device discovery function. Based on this discovery, PTZ control of the remote device is realized. The test results demonstrate that all devices supporting ONVIF protocol in LAN can be detected as well as PTZ control can be implemented by the designed ONVIF client module interface.
ONVIF protocol;Web Service;Discovery;PTZ
10.3969/j.issn.1002-0802.2016.06.023
TN948.6
:A
:1002-0802(2016)-06-0774-08
2016-02-06;
:2016-05-10 Received date:2016-02-06;Revised date:2016-05-10
該研究獲國家自然基金項(xiàng)目(No.61132004、61275073及61420106011),上??茖W(xué)技術(shù)發(fā)展基金項(xiàng)目(No.13JC1402600,14511100100,15511105400及15530500600)和上海市重點(diǎn)學(xué)科建設(shè)項(xiàng)目(No.S30108)資助
Foundation Item:This work is supported by Programs of Natural Science Foundation of China (No.61132004, 61275073 and 61420106011), Shanghai Science and Technology Development Funds (No. 13JC1402600, 14511100100, 15511105400 and 15530500600) and Shanghai Leading Academic Discipline Project (No.S30108).