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