宛吉林,沈瓊霞
(1.光纖通信技術(shù)和網(wǎng)絡(luò)國(guó)家重點(diǎn)實(shí)驗(yàn)室 湖北 武漢 430074;2.武漢郵電科學(xué)研究院 湖北 武漢 430074)
隨著如今視頻監(jiān)控系統(tǒng)已經(jīng)發(fā)展到系統(tǒng)網(wǎng)絡(luò)化時(shí)期,NVR系統(tǒng)基于網(wǎng)絡(luò)攝像頭來進(jìn)行監(jiān)控,即IP監(jiān)控系統(tǒng)[1]。由于NVR系統(tǒng)和前端IPC(IP camera)的網(wǎng)絡(luò)網(wǎng)段常常出現(xiàn)不統(tǒng)一而導(dǎo)致,設(shè)備發(fā)現(xiàn)和互連出現(xiàn)的問題,使得NVR系統(tǒng)往往只能在某一個(gè)網(wǎng)段和前端IPC進(jìn)行連接。文中研究的就是通過開發(fā)Onvif協(xié)議來實(shí)現(xiàn)雙網(wǎng)段的功能,使得NVR系統(tǒng)和前端IPC實(shí)現(xiàn)任意網(wǎng)段的設(shè)備發(fā)現(xiàn)和搜素。
NVR最主要的功能是通過網(wǎng)絡(luò)接收IPC(網(wǎng)絡(luò)攝像機(jī))設(shè)備傳輸?shù)臄?shù)字視頻碼流,并進(jìn)行存儲(chǔ)、管理,從而實(shí)現(xiàn)網(wǎng)絡(luò)化帶來的分布式架構(gòu)優(yōu)勢(shì)。為了實(shí)現(xiàn)局域網(wǎng)內(nèi)NVR對(duì)IPC的統(tǒng)一管理,實(shí)現(xiàn)對(duì)任意網(wǎng)段的設(shè)備發(fā)現(xiàn)和連接功能??梢栽贜VR和前端IPC設(shè)置一個(gè)共同的副網(wǎng)段的地址,假如為10的網(wǎng)段。這個(gè)網(wǎng)段對(duì)于用戶來說是隱蔽的,不可更改的地址,可以在任何情況下使用該網(wǎng)段實(shí)現(xiàn)互連和設(shè)備發(fā)現(xiàn)。這就需要涉及到兩個(gè)方面的設(shè)計(jì)問題,如何實(shí)現(xiàn)Onvif協(xié)議的多網(wǎng)段設(shè)備發(fā)現(xiàn),以及NVR系統(tǒng)如何獲取前端IPC設(shè)備服務(wù)端的副網(wǎng)段地址 (10網(wǎng)段的地址),這個(gè)地址用來替換掉Onvif接口所獲得的各profile和url中的主網(wǎng)段地址。設(shè)計(jì)模式如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)圖Fig.1 Structure diagram of the system design
在ONVIF協(xié)議規(guī)范中,與設(shè)備進(jìn)行通信交互,首當(dāng)其沖的問題就是ONVIF協(xié)議的設(shè)備發(fā)現(xiàn)服務(wù),這是其他服務(wù)的基礎(chǔ)。ONVIF協(xié)議運(yùn)用Ws-Discovery(Web Services Dynamic Discovery,Web Services動(dòng)態(tài)搜索)協(xié)議。這是一種實(shí)現(xiàn)設(shè)備自動(dòng)發(fā)現(xiàn)動(dòng)態(tài)搜索的方法,能夠?qū)崿F(xiàn)對(duì)多個(gè)目標(biāo)服務(wù)的發(fā)現(xiàn),客戶端先用多播方法發(fā)送一個(gè)探測(cè)包,目標(biāo)服務(wù)監(jiān)聽到后,若發(fā)現(xiàn)匹配便以單播的方法回復(fù)給客戶端。
文中NVR系統(tǒng)借助onvif協(xié)議中采用的ws-discovery協(xié)議的Ad-Hoc模式完成局域網(wǎng)內(nèi)的設(shè)備搜索。在Ad-Hoc模式下,客戶端以廣播的形式在一定的網(wǎng)絡(luò)范圍了發(fā)送探測(cè)(Probe報(bào)文)消息以搜尋目標(biāo)服務(wù)[2]。在該探測(cè)消息中,包含相應(yīng)的搜尋條件,如設(shè)備類型(type)。符合該條件的目標(biāo)服務(wù)在接收到探測(cè)消息之后,將自身相關(guān)的信息(scope信息,包括主網(wǎng)段的地址)回復(fù)給作為廣播消息發(fā)送源的客戶端(即NVR端)[3]??蛻舳烁鶕?jù)獲取到的服務(wù)信息,選擇適合的服務(wù)進(jìn)行調(diào)用。我們就可以在NVR端通過設(shè)備io接口獲取NVR設(shè)備的配置ip,作為localip傳參給soap結(jié)構(gòu)體。在NVR端創(chuàng)建好Probe的報(bào)文消息,指定type類型為Network Video Transmitter和唯一的urn:uuid信息,可以用當(dāng)前的時(shí)間作文隨機(jī)數(shù)填入進(jìn)去,然后通過多播地址239.255.255.250和端口3702來向局域網(wǎng)內(nèi)發(fā)送該P(yáng)robe消息[4]。Onvif多網(wǎng)段搜索流程如圖2所示。
圖2 Onvif多網(wǎng)段搜索流程圖Fig.2 Flow chart of onvif network segments search
在Onvif代碼中的soap結(jié)構(gòu)體中添加localip成員,在soap socket的tcp_connect()函數(shù)中套接字bind綁定當(dāng)前的localip,函數(shù)主要實(shí)現(xiàn)部分如下:
ONVIF協(xié)議是基于SOAP+XML消息格式進(jìn)行通信的[5],在搜索之前需要對(duì)SOAP消息進(jìn)行準(zhǔn)備工作。在NVR端,創(chuàng)建一個(gè)這樣的 soap實(shí)例struct soap mysoap,soap_init(&mysoap)初始化soap結(jié)構(gòu)體環(huán)境變量,通過設(shè)備io接口linux函數(shù) ioctl獲取 NVR設(shè)備的配置 ip,傳參給 mysoap.localip,設(shè)置 mysoap.connect_flags為SO_BROADCAST表示廣播,然后填寫好 mysoap.header消息的頭部信息(wsa__MessageID、wsa__To、wsa__Action),主要是 urn:uuid 信息(唯一性,可以用當(dāng)前的時(shí)間作為隨機(jī)數(shù)填入進(jìn)去),然后便是創(chuàng)建好Probe的報(bào)文消息,指定probe.d__Types類型為NetworkVideoTransmitter,并且設(shè)置mysoap的命名空間調(diào)用函數(shù)soap_set_namespaces[6]。 由此得到Probe報(bào)文的SOAP_XML請(qǐng)求消息如下:
然后通過多播地址239.255.255.250和端口3702來向局域網(wǎng)內(nèi)發(fā)送該P(yáng)robe消息。其函數(shù)實(shí)現(xiàn)如下:
根據(jù)這樣的步驟,客戶端將廣播消息通過SOAP協(xié)議通知到局域網(wǎng)絡(luò)內(nèi),等到符合條件的設(shè)備響應(yīng)。
在IPC端需要有與NVR系統(tǒng)一致的副網(wǎng)段地址,才能夠?qū)VR系統(tǒng)的廣播包進(jìn)行響應(yīng)的回應(yīng)。同時(shí)IPC應(yīng)當(dāng)有合適的消息格式提供給NVR系統(tǒng),來使NVR系統(tǒng)獲取到該副網(wǎng)段的地址。故IPC端應(yīng)該配置副網(wǎng)段的網(wǎng)絡(luò)地址(如10網(wǎng)段地址),并設(shè)計(jì)在onvif搜索回應(yīng)包中包含10網(wǎng)段的信息,可以在ProbeMatches報(bào)文中的scopes字段中加一條信息,故定義了一種ProbeMatches的格式,通過onvif測(cè)試軟件Onvif Conformance Test Tool可以看到IPC端的回應(yīng)報(bào)文,如圖3所示。
圖3 IPC端添加副網(wǎng)段的搜索回應(yīng)圖Fig.3 Chart response of IPC added the sub network segment
可以看到onvif測(cè)試軟件通過10.168.1.181的網(wǎng)址來進(jìn)行局域網(wǎng)內(nèi)的IPC設(shè)備搜索,發(fā)現(xiàn)了Device Service Address為192.168.200的IPC,這正是因?yàn)樵贗PC端設(shè)計(jì)有10網(wǎng)段的地址,才能夠onvif協(xié)議能夠發(fā)現(xiàn)該設(shè)備。同時(shí),IPC端在scopes中添加了subaddress的字段,其中包含了副網(wǎng)段的地址(10.0.10.229)。這樣可以使得NVR系統(tǒng)在設(shè)備發(fā)現(xiàn)時(shí),可以準(zhǔn)確簡(jiǎn)便的提取獲得該副網(wǎng)段的地址,用于后面的連接管理過程。
通過NVR和IPC前端的配合設(shè)計(jì),就能完成預(yù)想的設(shè)計(jì)目的,實(shí)現(xiàn)任意網(wǎng)段的設(shè)備搜索和添加連接。NVR系統(tǒng)和IPC端添加好相同的副網(wǎng)段,在搜索時(shí)就能夠發(fā)現(xiàn)IPC設(shè)備,同時(shí)提取實(shí)際的服務(wù)地址,即副網(wǎng)段地址,用于替換掉onvif協(xié)議接口所獲得的各profile和音視頻播放url中的主網(wǎng)段地址,這樣就可以實(shí)現(xiàn)兩者之間的連接。如圖4所示,在Hi3531芯片Linux2.6內(nèi)核的平臺(tái)上運(yùn)行我們的NVR系統(tǒng),在搜索和添加部分實(shí)現(xiàn)了該設(shè)計(jì),并完成實(shí)際應(yīng)用。
圖4 NVR系統(tǒng)的搜索添加各網(wǎng)段IPC圖Fig.4 Interface chart of the NVR system searching and connecting
文中介紹了在NVR系統(tǒng)中onvif協(xié)議的設(shè)備發(fā)現(xiàn)和連接管理IPC的改進(jìn)方法,以及和前端IPC的對(duì)應(yīng)設(shè)計(jì),從而可以實(shí)現(xiàn)NVR和IPC在副網(wǎng)段的設(shè)備發(fā)現(xiàn)和互連管理,解決了網(wǎng)段不一致時(shí)出現(xiàn)的設(shè)備發(fā)現(xiàn)和互連管理的問題,該設(shè)計(jì)方案簡(jiǎn)便地解決了NVR設(shè)備發(fā)現(xiàn)的網(wǎng)絡(luò)局限和連接管理問題,具有重要的實(shí)際運(yùn)用價(jià)值。
[1]趙也倪.基于ONVIF的智能監(jiān)控管理軟件設(shè)計(jì) [D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.
[2]馬宇昌,沈蘇彬,歐陽志.基于ONVIF標(biāo)準(zhǔn)的設(shè)備發(fā)現(xiàn)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013(11):224-228.MA Yu-chang,HEN Su-bin,OUYANG Zhi.Design and implementation for device discovery based on ONVIF[J].Computer Technology and Development,2013(11):224-228.
[3]儲(chǔ)強(qiáng).ONVIF協(xié)議媒體服務(wù)的設(shè)計(jì)實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.
[4]李校林,肖路歡,何策.基于ONVIF協(xié)議的NVR系統(tǒng)中網(wǎng)絡(luò)視頻接口的設(shè)計(jì)[J].電視技術(shù),2014,38(11):166-169.LI Xiao-lin,XIAO Lu-huan,HE Ce.Design and implementation of NVR system network video interface based on ONVIF protocol[J].Video Eengineering,2014,38(11):166-169.
[5]羅正華,陳紹祥,傅勇.基于ONVIF標(biāo)準(zhǔn)的視頻監(jiān)控技術(shù)研究[J].成都大學(xué)學(xué)報(bào),2013(12):378-382.LUO Zheng-hua,CHEN Shao-xiang,F(xiàn)U Yong.Research for video monitoring technology based on ONVIF[J].Journal of Chengdu University,2013(12):378-382.
[6]徐飛明.基于ONVIF協(xié)議的NVR軟件平臺(tái)的設(shè)計(jì)與開發(fā)[D].杭州:浙江大學(xué),2012.