ONVIF 提供了一系列 HTTP API,用于访问和控制支持 ONVIF 的设备。这些 API 基于 SOAP 协议,通过 HTTP 协议传输。主要的 API 分为几个关键的服务类别,每个类别都有特定的操作。以下是 ONVIF 相关的 HTTP API 概述:
1. 设备管理服务 (Device Management Service)
设备管理服务用于获取和设置设备的基本信息和配置。
-
GetCapabilities: 获取设备的能力,包括可用的服务类型。
-
GetDeviceInformation: 获取设备的基本信息,如制造商、型号、固件版本等。
-
GetSystemDateAndTime: 获取设备的当前系统时间和日期。
-
SetSystemDateAndTime: 设置设备的系统时间和日期。
-
GetNetworkInterfaces: 获取设备的网络接口信息。
-
SetNetworkInterfaces: 配置设备的网络接口。
-
Reboot: 重启设备。
2. 媒体服务 (Media Service)
媒体服务用于获取和配置设备的视频流和音频流。
-
GetProfiles: 获取设备的所有媒体配置文件(Profiles)。
-
GetStreamUri: 获取指定媒体配置文件的视频流 URI。
-
GetSnapshotUri: 获取静态图片的 URI(快照)。
-
StartMulticastStreaming: 开始多播流媒体传输。
-
StopMulticastStreaming: 停止多播流媒体传输。
-
SetVideoEncoderConfiguration: 配置视频编码设置。
3. PTZ 控制服务 (PTZ Service)
PTZ 服务用于控制设备的云台功能。
-
GetConfigurations: 获取 PTZ 配置。
-
GotoPreset: 移动摄像机到预设位置。
-
ContinuousMove: 开始持续移动摄像机。
-
RelativeMove: 相对移动摄像机。
-
AbsoluteMove: 绝对移动摄像机。
-
Stop: 停止摄像机的 PTZ 移动。
4. 事件服务 (Event Service)
事件服务用于管理和订阅设备的事件通知。
-
GetEventProperties: 获取事件源、数据和触发条件的信息。
-
CreatePullPointSubscription: 创建一个拉取式事件订阅。
-
PullMessages: 从订阅的 PullPoint 中获取事件消息。
-
Unsubscribe: 取消事件订阅。
5. 分析服务 (Analytics Service)
分析服务用于访问和配置设备的智能分析功能。
-
GetAnalyticsModules: 获取设备上配置的分析模块。
-
GetSupportedAnalyticsModules: 获取设备支持的分析模块类型。
-
GetAnalyticsEngines: 获取设备上的分析引擎信息。
使用 SOAP 访问 ONVIF HTTP API
ONVIF API 使用 SOAP(Simple Object Access Protocol)消息传递格式。以下是一个访问 ONVIF API 的示例 SOAP 请求:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl"><soap:Header/><soap:Body><tds:GetDeviceInformation/></soap:Body>
</soap:Envelope>
访问 ONVIF API 的步骤
-
获取设备的 XAddr: 首先需要通过 WS-Discovery 获取设备的服务地址(XAddr),这通常是在设备的 IP 地址和端口上,例如
http://<device-ip>:<device-port>/onvif/device_service
。 -
发送 HTTP 请求: 使用 HTTP POST 方法发送 SOAP 消息到设备的服务地址。
-
解析 SOAP 响应: 解析设备返回的 SOAP 消息,以获取请求的结果。
常用工具
-
ONVIF Device Manager: 一个免费的 Windows 工具,用于发现和管理网络中的 ONVIF 设备。
-
Postman: 可以用来手动发送和测试 SOAP 请求。
通过这些服务和 API,您可以远程管理和控制 ONVIF 兼容的设备,实现设备监控和集成。