ONVIF开发教程:从probe消息到安全验证

4星 · 超过85%的资源 需积分: 32 586 下载量 151 浏览量 更新于2024-09-21 2 收藏 103KB DOC 举报
"ONVIF开发步骤" ONVIF(Open Network Video Interface Forum)是一个开放标准,定义了网络视频产品之间的通信协议,主要用于视频监控领域。开发ONVIF涉及多个步骤,下面将详细解释这些步骤。 1) 设备匹配与Probe消息 在ONVIF开发中,设备匹配是通过发送Probe消息来实现的。`soap_serve___dndl__Probe`函数是处理服务端响应Probe请求的部分。原始代码中,`soap_put_d__ProbeMatchesType`的命名空间前缀是"dn",但在修改后,前缀更改为"d",这表明在处理ONVIF消息时,需要正确设置命名空间以符合ONVIF规范。 2) 生成头文件 ONVIF涉及到多个服务,如Analytics、PTZ、Device Management、Media和Event,每个服务都有对应的WSDL(Web Services Description Language)文件。开发者使用这些WSDL文件生成头文件,例如`analytics.wsdl`、`ptz.wsdl`等。同时,为了支持安全接口,需要引入`wsse.h`,这是用于Web服务安全的库,提供数字签名和加密等功能。 3) 安全验证用户 在SOAP消息中,`SOAP_ENV__Header`结构体包含了消息的安全信息,如`wsse__Security`。这里的代码更改了`mustUnderstand`标志,从1变为0,这意味着服务器不再强制理解安全元素,而是允许其通过。这可能是为了简化测试环境或特定场景下的配置。 4) 生成C源文件 使用`soapcpp2`工具生成C语言的源代码。在这个例子中,使用了`-2`参数指定ONVIF 1.2版本。注意,如果选择`-1`,可能会导致消息通知接口不被ONVIF测试工具识别。`-L-pws`指定了链接库路径,`-I`指定了包含文件的目录。 5) 更改文件扩展名 生成的源文件通常为`.c`,但在这个案例中,它们被改为了`.cpp`,这表明项目可能基于C++进行,因此需要相应的编译器支持。 6) 创建客户端和服务端 ONVIF开发包括创建客户端和服务端。客户端主要负责发送Hello消息,以及调用消息通知接口,以建立连接和进行通信。服务端则提供这些接口供客户端调用,实现设备功能的暴露。 7) 生成头文件 `wsdl2h`工具用于从WSDL文件生成头文件,这些头文件包含了服务接口的定义,使得开发者能够更容易地在代码中调用这些服务。 在实际开发中,除了以上步骤,还需要理解ONVIF的XML Schema定义,熟悉SOAP消息的构建和解析,以及正确处理设备发现、身份验证、媒体流传输、事件订阅等核心功能。此外,还要考虑网络通信的稳定性和安全性,例如使用TLS/SSL进行数据加密。对于大型项目,可能还需要实现错误处理、日志记录和性能优化等功能。