1. 專欄導(dǎo)讀本專欄第一篇文章「專欄開篇」列出了專欄的完整目錄,按目錄順序閱讀,有助于你的理解,專欄前面文章講過的知識(shí)點(diǎn)(或代碼段),后面文章不會(huì)贅述。為了節(jié)省篇幅,突出重點(diǎn),在文章中展示的示例代碼僅僅是關(guān)鍵代碼,你可以在「專欄開篇」中獲取完整代碼。 如有錯(cuò)誤,歡迎你的留言糾正!讓我們共同成長!你的「點(diǎn)贊」或「打賞」是對(duì)我最大的支持和鼓勵(lì)! 2. 前言這次「ONVIF協(xié)議網(wǎng)絡(luò)攝像機(jī)(IPC)客戶端程序開發(fā)」專欄,到了這篇文章,才真正的開始介紹ONVIF,前面的文章都是為了介紹ONVIF做的鋪墊,如果前面的文章你還沒看過,建議你先去閱讀過再來瀏覽本文。 3. ONVIF背景網(wǎng)絡(luò)攝像機(jī)是網(wǎng)絡(luò)設(shè)備,需要有通訊協(xié)議,早期的網(wǎng)絡(luò)攝像機(jī)硬件提供商都采用私有協(xié)議。 隨著視頻監(jiān)控的網(wǎng)絡(luò)化應(yīng)用,產(chǎn)業(yè)鏈的分工將越來越細(xì)。有些廠商專門做攝像頭,有些廠商專門做視頻服務(wù)器,有些廠商則可能專門做平臺(tái)等,然后通過集成商進(jìn)行集成,提供給最終客戶。私有協(xié)議無法勝任這種產(chǎn)業(yè)合作模式,行業(yè)標(biāo)準(zhǔn)化的接口由此應(yīng)運(yùn)而生。 目前,網(wǎng)絡(luò)攝像機(jī)的標(biāo)準(zhǔn)協(xié)議,國際標(biāo)準(zhǔn)上有三大類:ONVIF、PSIA和HDCCTV,國內(nèi)標(biāo)準(zhǔn)有國標(biāo)GB/T28181。ONVIF陣營日益壯大,與PSIA、HDCCTV相比,無論是支持廠商的數(shù)目、廠商的知名度,還是市場(chǎng)占有率都遙遙領(lǐng)先。ONVIF標(biāo)準(zhǔn)的廠商覆蓋芯片、視頻前端設(shè)備、存儲(chǔ)設(shè)備、系統(tǒng)平臺(tái)、智能分析設(shè)備、門禁、傳感設(shè)備等各個(gè)安防相關(guān)領(lǐng)域。我們說的IPC攝像頭只是ONVIF標(biāo)準(zhǔn)里的一個(gè)分支而已,可見ONVIF的強(qiáng)大。 ONVIF(Open Network Video Interface Forum,開放型網(wǎng)絡(luò)視頻接口論壇)以公開、開放的原則共同制定開放性行業(yè)標(biāo)準(zhǔn)。 從ONVIF官網(wǎng)上可以了解到(https://www./about/member-list/),為適應(yīng)各種不同的參與級(jí)別,ONVIF提供了不同等級(jí)的會(huì)員企業(yè)資格,其中不乏國內(nèi)外著名的設(shè)備制造商與集成商,國內(nèi)的華為、海康威視、浙江大華、波??萍己图研沤菀彩荗NVIF論壇的高級(jí)會(huì)員。 4. ONVIF技術(shù)框架ONVIF規(guī)范中設(shè)備管理和控制部分所定義的接口均以Web Services的形式提供。ONVIF規(guī)范涵蓋了完全的XML及WSDL的定義。每一個(gè)支持ONVIF規(guī)范的終端設(shè)備均須提供與功能相應(yīng)的Web Service。服務(wù)端與客戶端的數(shù)據(jù)交互采用SOAP協(xié)議。ONVIF中的其他部分比如音視頻流則通過RTP/RTSP進(jìn)行。 拿IPC攝像頭來說,IPC是Web Services服務(wù)端,其提供的WEB服務(wù)接口需符合ONVIF協(xié)議規(guī)范(這些接口在ONVIF規(guī)定的WSDL文檔中),我們開發(fā)的客戶端通過這些ONVIF規(guī)范接口跟IPC通訊,比如:
由于SOAP協(xié)議不適合傳輸音視頻流,ONVIF規(guī)范中的傳輸音視頻流采用的是已經(jīng)很成熟的RTP/RTSP多媒體傳輸協(xié)議。 簡單粗暴的理解:IPC的各種參數(shù)獲取/配置都是通過ONVIF協(xié)議實(shí)現(xiàn),而音視頻流多媒體傳輸采用的是RTP/RTSP協(xié)議實(shí)現(xiàn)。 5. ONVIF技術(shù)規(guī)格ONVIF協(xié)議中,有一系列Profile的技術(shù)規(guī)格。ONVIF之所以引入了Profile的概念,使得終端用戶能夠更容易區(qū)分各個(gè)Profile所支持的特性,而無需確定ONVIF技術(shù)規(guī)格不同版本間的兼容性。截止目前,已經(jīng)發(fā)布的Profile包括Profile S/C/G/A/Q五種。 以上截圖來源于官網(wǎng)https://www./profiles/中《ONVIF Profile Feature Overview》文檔。從這個(gè)圖能看出,各個(gè)Profile技術(shù)規(guī)格的發(fā)布是有時(shí)間先后順序的,并不是一起發(fā)布。Profile S作為profile發(fā)布系列中的排頭兵,于2011年發(fā)布,2016年做了一次修訂,Profile C于2013年發(fā)布,之后再依次發(fā)布Profile G/A/Q。 以下是我對(duì)這些Profile的理解:
隨著ONVIF的發(fā)展,我估計(jì),ONVIF指導(dǎo)委員會(huì)(Steering Committee)在未來還會(huì)有后續(xù)的Profiles發(fā)布以規(guī)范其他技術(shù)規(guī)格。 跟IPC攝像頭有關(guān)的主要是Profile S技術(shù)規(guī)格。 6. ONVIF接口規(guī)范ONVIF接口被劃分為不同模塊,包括:設(shè)備發(fā)現(xiàn)、設(shè)備管理、設(shè)備輸入輸出服務(wù)、圖像配置、媒體配置、實(shí)時(shí)流媒體、接收端配置、顯示服務(wù)、事件處理、PTZ控制等。 每個(gè)模塊的接口都有相對(duì)應(yīng)的WSDL文檔進(jìn)行描述,可以在ONVIF官網(wǎng)「Network Interface Specifications」中查閱,鏈接如下: 如果想快速瀏覽ONVIF所有模塊的常用接口,請(qǐng)看這里「ONVIF 2.0 Service Operation Index」,鏈接如下: 注意:這里僅僅是列出常用接口,不是全部接口,每個(gè)模塊的全部接口需要進(jìn)入每個(gè)模塊的WSDL中去看,點(diǎn)擊任意一個(gè)接口就會(huì)自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)的WSDL文檔鏈接處。 比如說GetServices接口以上頁面沒有顯示,但在http://www./ver10/device/wsdl/devicemgmt.wsdl中是的。所以想看全部的接口,還是得深入每個(gè)wsdl才行啊。 想要系統(tǒng)、全面的了解ONVIF的各個(gè)模塊,可以閱讀網(wǎng)上盛傳的《ONVIF2.0協(xié)議珍藏版》,「點(diǎn)擊下載」。 現(xiàn)在你對(duì)這些ONVIF模塊、接口不熟,沒關(guān)系,跟著我的專欄一步步往下走,以后就會(huì)有體會(huì)了。 7. 開發(fā)流程(不要自己造輪子)這里先簡要的介紹下IPC客戶端開發(fā)流程,具體怎么操作在專欄后續(xù)文章中會(huì)陸續(xù)展示。ONVIF協(xié)議既然是Web Services框架,那就不需要自己造輪子,ONVIF協(xié)議部分由gSOAP工具幫我們自動(dòng)生成代碼框架。 而RTP/RTSP音視頻傳輸部分則采用開源的FFmpge即可,F(xiàn)Fmpge在音視頻處理方面,那是首屈一指。 IPC客戶端程序整個(gè)開發(fā)流程如下圖所示:
|
|
|