安防產(chǎn)品的通用標準目前有兩大主流陣營:Onvif以及Psia,從目前廠家的支持數(shù)量以及市場占有量來說,Onvif已經(jīng)牢牢占據(jù)了領先地位,且在網(wǎng)絡視頻監(jiān)控領域,優(yōu)勢地位更明顯。下面摘錄百科的描述來給Onvif做下簡單介紹:
2008年5月,由安訊士聯(lián)合博世及索尼三方宣布將攜手共同成立一個國際開放型網(wǎng)絡視頻產(chǎn)品標準網(wǎng)絡接口開發(fā)論壇,取名為ONVIF(Open Network Video Interface Forum,開放型網(wǎng)絡視頻接口論壇),并以公開、開放的原則共同制定開放性行業(yè)標準。
1:gsoap官網(wǎng)(http://gsoap2.sourceforge.net/)下載最新版gsoap(本次版本為gsoap_2.8.17)并解壓。
2:新建一個文件夾(OnvifFramework)
將解壓的gsoap_2.8.17文件拷貝至OnvifFramework目錄下
將gsoap_2.8.17\gsoap-2.8\gsoap 路徑下的typemap.dat以及gsoap_2.8.17\gsoap-2.8\gsoap\bin\win32 路徑下的wsdl2h.exe soapcpp2.exe也拷貝至該目錄下。
3: Onvif官網(wǎng)(http://www.onvif.org/Documents/Specifications.aspx)頁面里ONVIF WSDL and XML Schemas Specifications找到各wsdl(18個左右)并下載下來
(右鍵另存為即可),放入GenerateSource文件夾中。
4:生成onvif.h
生成方式有在線生成和本地生成兩種方式。由于網(wǎng)絡的原因,在線生成很容易中斷。故臨時改用本地生成方式,在實際運行時發(fā)現(xiàn),本地生成過程中也需要從網(wǎng)絡上下載
相關的依賴文件,并且對文件路徑有如下要求:
OnvifFramework
----level1
----level2
----GenerateSource
----typemap.dat
----wsdl2h.exe
----soapcpp2.exe
----remotediscovery.wsdl
----devicemgmt.wsdl
----analytics.wsdl
----analyticsdevice.wsdl
----media.wsdl
----deviceio.wsdl
----display.wsdl
----event.wsdl
----imaging.wsdl
----recording.wsdl
----replay.wsdl
----search.wsdl
----receiver.wsdl
----ptz.wsdl
----ver10
----device
----wsdl
----devicemgmt.wsdl
----media
----wsdl
----media.wsdl
----schema
----onvif.xsd
----ver10
----schema
----onvif.xsd
管理員權限打開CMD,切換至GenerateSource目錄下,將如下指令貼到CMD窗口中回車運行即可生成onvif.h文件:
結果信息如下圖所示:
注:生成的時候可能會出現(xiàn)如下錯誤:
wsa5.h(290): **ERROR**: remote method nameclash: struct/class 'SOAP_ENV__Fault' already declared at line 274
解決辦法如下:
打開gsoap_2.8.17\gsoap-2.8\gsoap\import 路徑下的wsa5.h, 將277行的SOAP_ENV__Fault結構體注釋掉(改成其他名字亦可)
將如下指令貼到CMD窗口中回車運行即可:
soapcpp2 -2 -c onvif.h -x -I ..\..\..\gsoap_2.8.17\gsoap-2.8\gsoap\import -I ..\..\..\gsoap_2.8.17\gsoap-2.8\gsoap
看到下圖中的Compilation successful即可:
6:生成文件代碼文件如下:
最后做如下修改
1.后綴為nsmap的命名空間文件內容都一樣,保留一個即可,后綴改為.h文件(wsdd.nsmap更名為wsdd.h),需要的時候包含此文件即可
2.刪除soapClientLib.c和soapServerLib.c文件。
3.將gsoap-2.8.17/gsoap-2.8/gsoap下的stdsoap2.h和stdsoap2.c文件和gsoap-2.8.17/gsoap-2.8/gsoap/custom下的duration.c文件都拷貝到當前目錄下
最終的文件如下:
至此Onvif的開發(fā)環(huán)境框架已經(jīng)完成,客戶端的開發(fā)的話,使用soapClient.c文件;服務端開發(fā)的話,使用soapServer.c即可。
以上所有下載及生成文件均打包上傳了,可以點擊我的資源下載,直接將FrameworkSource中的代碼文件拷貝出來即可進行onvif的后續(xù)開發(fā)了。