1. 程式人生 > >ONVIF學習-ONVIF開發框架搭建(C++)

ONVIF學習-ONVIF開發框架搭建(C++)

nts red port ice 框架搭建 代碼 nal tails 服務器

第一步、下載gsoap

從gsoap官網(http://www.genivia.com/products.html#notice)下載最新版gsoap(博主用的是gsoap_2.8.45)。gsoap有三個版本:Open Source gSOAP、Commercial gSOAP Edition、Commercial gSOAP Edition。我們下載開源版本即可。

第二步、解壓gsoap並建立文件夾層次

新建一個文件夾,命名為OnvifFramework,將下載下來的gsoap_x.x.xx.zip解壓到該文件夾。在該文件夾下再新建兩個文件夾,分別命名為:level1和ver10。在level1文件夾下新建一個文件夾,命名為:level2。在level2文件夾下新建三個文件夾,分別命名為:FrameworkSource、GenerateSource、ver10。在ver10文件夾下建立三個文件夾,分別命名為:device、media、schema。在device和media文件夾下新建一個文件夾,命名為wsdl。在ver10文件夾下新建一個文件夾,命名為schema。文件夾請務必按這個順序建立。最後將OnvifFramework\gsoap-2.8\gsoap路徑下的typemap.dat和OnvifFramework\gsoap-2.8\gsoap\bin\win32路徑下的wsdl2h.exe、soapcpp2.exe(wsdl2h不支持https,需要重新編譯gsoap,編譯方法參照最下面的博客鏈接)拷貝到GenerateSource文件夾下。

具體文件夾層次結構如下圖所示:

技術分享

第三步、下載Onvif相關文件

從Onvif官網(http://www.onvif.org/Documents/Specifications.aspx)的ONVIF WSDL and XML Schemas Specifications頁面中下載wsdl(右鍵-將鏈接另存為即可),並將下載下來的wsdl放在GenerateSource文件夾內。拷貝devicemgmt.wsdl到D:\ONVIF\OnvifFramework\level1\level2\ver10\device\wsdl路徑下,拷貝media.wsdl到OnvifFramework\level1\level2\ver10\media\wsdl路徑下,拷貝onvif.xsd到OnvifFramework\level1\level2\ver10\schema路徑下,拷貝onvif.xsd到OnvifFramework\ver10\schema路徑下。

第四步、生成onvif.h

生成方式分為在線生成和本地生成兩種,鑒於在線生成的不穩定性,博主采用本地生成方式。打開控制臺,切換到GenerateSource路徑下,在控制臺中輸入wsdl2h -o onvif.h -t ./typemap.dat accesscontrol.wsdl accessrules.wsdl actionengine.wsdl advancedsecurity.wsdl analytics.wsdl analyticsdevice.wsdl

credential.wsdl deviceio.wsdl devicemgmt.wsdl display.wsdl doorcontrol.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl schedule.wsdl search.wsdl

(各個wsdl間用一個空格隔開)

第五步、通過onvif.h文件生成源代碼框架

如果需要鑒權,修改onvif.h頭文件,加入#import "wsse.h"。將 OnvifFramework\gsoap-2.8\gsoap\import路徑下的wsa5.h中的SOAP_ENV__Fault結構體註釋掉或改為其他名字,如SOAP_ENV__Fault_alex。修改完後在控制臺中輸入soapcpp2 -j onvif.h -I ../../../gsoap-2.8/gsoap/import:../../../gsoap-2.8/gsoap,看到Compilation successful即為成功。

第六步、整理源代碼

將生成的.h和.cpp文件以及wsdd.nsmap文件拷貝到FrameworkSource中,並拷貝OnvifFramework\gsoap-2.8\gsoap路徑下的stdsoap2.h和stdsoap2.cpp到該文件夾。

總結

通過以上六個步驟即可完成ONVIF開發框架搭建,以後開發Onvif應用時,直接拷貝FrameworkSource文件夾中的文件即可(開發Onvif客戶端程序,使用XXXXProxy.h和XXXXProxy.cpp,開發Onvif服務器端程序,使用XXXXService.h和XXXXService.cpp)。Onvif框架文件已上傳,請到此處(http://download.csdn.net/download/u011110151/9898860)下載。

這篇博客(http://blog.csdn.net/saloon_yuan/article/details/24901597)及這篇博客(http://blog.csdn.net/benkaoya/article/details/72466827)給予博主很大幫助,特此感謝。

ONVIF學習-ONVIF開發框架搭建(C++)