### ONVIF客户端开发知识点详解
#### 一、ONVIF概述及协议介绍
ONVIF(Open Network Video Interface Forum)是一种开放标准,用于提高基于IP的安防产品的互操作性。该标准支持视频监控和安全硬件设备之间的通信,如网络摄像头、视频管理软件等。
#### 二、ONVIF开发环境搭建
ONVIF开发前需搭建开发环境,主要包括WSDL文件获取与处理、工具安装等步骤。
##### WSDL文件来源与下载
- **来源**:ONVIF官方提供了一系列WSDL文件供开发者使用,这些文件可以从官方网站(http://www.onvif.org/onvif/ver20/util/operationIndex.html)获取。
- **下载方法**:直接在浏览器中点击链接后选择“链接另存为”,即可下载所需的WSDL文件。建议直接使用URL地址,避免因本地文件导致的问题。
##### Web服务(WebServer服务)
- ONVIF通过Web服务提供一系列功能模块,使用户能够通过标准化接口远程调用摄像头的各种功能,无需关心具体硬件品牌或型号。
- 开发过程中,使用C/C++语言时,可通过特定工具实现对这些Web服务接口的调用。
#### 三、gSOAP工具及其使用
gSOAP是一个强大的工具,用于解析WSDL文件并生成对应的C/C++代码,使得开发者能够在应用程序中调用ONVIF定义的服务接口。
##### gSOAP下载与安装
- **下载地址**:https://sourceforge.net/projects/gsoap2/files/
- **安装步骤**:下载最新版本的gSOAP工具包,解压至指定目录即可。Windows环境下,可直接运行解压后的文件夹内的工具。
##### H文件生成
- **生成过程**:通过gSOAP工具,使用特定命令行参数生成相应的头文件(.h文件)。
- **命令示例**:`wsdl2h -oonvif.h -c -s -t.\typemap.dat http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl`
- `-oonvif.h` 指定生成的头文件名称;
- `-c` 表示生成纯C代码;
- `-s` 使用指定的typemap.dat文件;
- `-t.\typemap.dat` 指定typemap.dat文件路径;
- `http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl` 指定WSDL文件的URL地址。
- **注意事项**:生成头文件时可能遇到某些WSDL文件无法成功生成的情况(例如event.wsdl),此时可暂时忽略这些文件,避免生成过程失败。
##### 鉴权操作
- 在进行ONVIF鉴权操作时(如输入用户名密码验证),需要在生成的onvif.h文件中添加`#import "wsse.h"`语句,并重新编译生成c文件和h文件。
#### 四、总结
ONVIF客户端开发涉及多个环节,包括但不限于开发环境的搭建、WSDL文件的获取与处理以及使用gSOAP工具生成代码等。通过以上步骤,开发者可以构建出能够与各种ONVIF兼容设备通信的应用程序,极大地提高了系统的互操作性和灵活性。在整个开发过程中,合理利用官方资源和工具将大大提升开发效率。