安防产品的通用标准目前有两大主流阵营:Onvif以及Psia,从目前厂家的支持数量以及市场占有量来说,Onvif已经牢牢占据了领先地位,且在网络视频监控领域,优势地位更明显。下面摘录百科的描述来给Onvif做下简单介绍:
2008年5月,由安讯士联合博世及索尼三方宣布将携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛),并以公开、开放的原则共同制定开放性行业标准。
1:gsoap官网(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官网(http://www.onvif.org/Documents/Specifications.aspx)页面里ONVIF WSDL and XML Schemas Specifications找到各wsdl(18个左右)并下载下来
(右键另存为即可),放入GenerateSource文件夹中。
4:生成onvif.h
生成方式有在线生成和本地生成两种方式。由于网络的原因,在线生成很容易中断。故临时改用本地生成方式,在实际运行时发现,本地生成过程中也需要从网络上下载
相关的依赖文件,并且对文件路径有如下要求:
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文件:
结果信息如下图所示:
注:生成的时候可能会出现如下错误:
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的开发环境框架已经完成,客户端的开发的话,使用soapClient.c文件;服务端开发的话,使用soapServer.c即可。
以上所有下载及生成文件均打包上传了,可以点击我的资源下载,直接将FrameworkSource中的代码文件拷贝出来即可进行onvif的后续开发了。