ONVIF WS-Discovery 发现服务介绍ONVIF WS-Discovery 是 ONVIFOpen Network Video Interface Forum开放式网络视频接口论坛标准中用于在局域网内自动发现网络视频设备如 IP 摄像机、NVR 等的核心机制。它基于 OASIS 制定的WS-DiscoveryWeb Services Dynamic Discovery协议规范让客户端无需预先知道设备的 IP 地址就能找到网络上的 ONVIF 兼容设备。一、基本原理WS-Discovery 是一种多播发现协议工作在 UDP 之上通过向特定的多播地址发送 SOAP 格式的探测消息来发现设备。关键参数项目值多播地址 (IPv4)239.255.255.250多播地址 (IPv6)FF02::CUDP 端口3702消息格式SOAP 1.2 over UDPXML 命名空间http://schemas.xmlsoap.org/ws/2005/04/discovery二、工作模式WS-Discovery 定义了两种运行模式1. Ad-hoc 模式无中心模式这是 ONVIF 最常用的方式。客户端直接向多播地址发送 Probe 消息网络中的所有 ONVIF 设备监听该地址并做出响应。适用于局域网内的即插即用场景。2. Managed 模式托管模式需要一个 Discovery Proxy发现代理作为中心节点设备向其注册客户端向代理查询。适用于跨子网或大规模网络环境。三、核心消息类型WS-Discovery 定义了四种主要的 SOAP 消息Hello设备上线时主动发送的多播通知告知网络我来了包含设备的 EndpointReference唯一标识符、Types设备类型、Scopes作用域和 XAddrs服务地址。Bye设备下线前发送的多播通知告知网络我要走了。Probe客户端发送的多播探测请求用于查找符合特定条件Types 和 Scopes 过滤的设备。ProbeMatch设备收到 Probe 后若匹配过滤条件则以单播 UDP 方式回复客户端包含自身的服务访问地址XAddrs。此外还有Resolve和ResolveMatch用于通过 EndpointReference 查询具体的传输地址。四、ONVIF 中的具体应用在 ONVIF 规范中WS-Discovery 用于设备发现阶段是 ONVIF 交互流程的第一步。典型发现流程时序图┌──────────────┐ ┌──────────────┐ │ 客户端软件 │ │ ONVIF 摄像头 │ │ (NVR/VMS) │ │ (IPC) │ └──────┬───────┘ └──────┬───────┘ │ │ │ ① Probe 探测请求 (多播到 239.255.255.250:3702) │───────────────────────────────────────── │ │ │ ② ProbeMatch 响应 (单播返回给客户端) │ 包含: XAddrs (设备服务地址URL) │ ───────────────────────────────────────│ │ │ │ ③ 通过 XAddrs 获取设备能力 (GetCapabilities) │───────────────────────────────────────── │ │ │ ④ 获取媒体地址、RTSP流地址等 │ ───────────────────────────────────────│流程步骤详解① Probe 探测客户端如 VMS 软件构造一个 Probe SOAP 消息Types 字段通常设为dn:NetworkVideoTransmitter网络视频发射器即 IP 摄像机或tds:Device通过 UDP 多播发送到239.255.255.250:3702。② ProbeMatch 响应网络内所有 ONVIF 设备接收该消息匹配条件的设备以单播方式回复 ProbeMatch。响应中的XAddrs字段包含设备的 Device Service 地址通常形如http://192.168.1.100/onvif/device_service。③ GetCapabilities 能力查询客户端拿到 XAddrs 后通过 HTTP/SOAP 调用GetCapabilities接口获取设备支持的服务能力Media、PTZ、Imaging、Events 等及各自的服务地址。此阶段通常需要通过 WS-UsernameToken 进行认证。④ 获取媒体流信息客户端再调用 Media Service 的GetProfiles、GetStreamUri等接口最终获取到 RTSP 播放地址如rtsp://192.168.1.100:554/Streaming/Channels/101从而开始拉取实时视频流。五、Scopes 作用域机制ONVIF 对 WS-Discovery 的 Scopes 字段做了扩展定义用于描述设备的属性。常见 Scopes 包括onvif://www.onvif.org/type/video_encoder— 设备类型onvif://www.onvif.org/hardware/model— 硬件型号onvif://www.onvif.org/name/name— 设备名称onvif://www.onvif.org/location/location— 安装位置onvif://www.onvif.org/Profile/Streaming— 支持的 Profile客户端可以在 Probe 中指定 Scopes 过滤条件只发现符合特定属性的设备。六、实现要点与注意事项网络要求由于依赖多播WS-Discovery 通常只能在同一广播域子网内工作。跨路由器的场景需路由器支持多播转发或使用 Discovery Proxy。MessageID 与 RelatesTo每条 SOAP 消息带有唯一的 MessageIDUUID 形式响应消息通过 RelatesTo 字段关联到请求用于去重和匹配。响应延迟为避免大量设备同时回复造成网络风暴规范要求设备在 0 到 APP_MAX_DELAY默认 500ms之间的随机时间后再回复。安全性WS-Discovery 本身不做认证任何设备都可回复。因此发现后必须通过 ONVIF 的 WS-Security用户名令牌进行认证才能访问设备功能。防火墙需要放行 UDP 3702 端口以及多播流量。七、常用开发库实现 ONVIF WS-Discovery 时常用的库和工具包括gSOAPC/C— ONVIF 官方推荐的 SOAP 框架含 wsdd 插件python-ws-discovery / onvif-zeepPythononvif-java、onvif-nvcJavaONVIF Device Manager、ONVIF Device Test Tool— 常用测试工具
ONVIF WS-Discovery 发现服务介绍
发布时间:2026/7/3 4:51:07
ONVIF WS-Discovery 发现服务介绍ONVIF WS-Discovery 是 ONVIFOpen Network Video Interface Forum开放式网络视频接口论坛标准中用于在局域网内自动发现网络视频设备如 IP 摄像机、NVR 等的核心机制。它基于 OASIS 制定的WS-DiscoveryWeb Services Dynamic Discovery协议规范让客户端无需预先知道设备的 IP 地址就能找到网络上的 ONVIF 兼容设备。一、基本原理WS-Discovery 是一种多播发现协议工作在 UDP 之上通过向特定的多播地址发送 SOAP 格式的探测消息来发现设备。关键参数项目值多播地址 (IPv4)239.255.255.250多播地址 (IPv6)FF02::CUDP 端口3702消息格式SOAP 1.2 over UDPXML 命名空间http://schemas.xmlsoap.org/ws/2005/04/discovery二、工作模式WS-Discovery 定义了两种运行模式1. Ad-hoc 模式无中心模式这是 ONVIF 最常用的方式。客户端直接向多播地址发送 Probe 消息网络中的所有 ONVIF 设备监听该地址并做出响应。适用于局域网内的即插即用场景。2. Managed 模式托管模式需要一个 Discovery Proxy发现代理作为中心节点设备向其注册客户端向代理查询。适用于跨子网或大规模网络环境。三、核心消息类型WS-Discovery 定义了四种主要的 SOAP 消息Hello设备上线时主动发送的多播通知告知网络我来了包含设备的 EndpointReference唯一标识符、Types设备类型、Scopes作用域和 XAddrs服务地址。Bye设备下线前发送的多播通知告知网络我要走了。Probe客户端发送的多播探测请求用于查找符合特定条件Types 和 Scopes 过滤的设备。ProbeMatch设备收到 Probe 后若匹配过滤条件则以单播 UDP 方式回复客户端包含自身的服务访问地址XAddrs。此外还有Resolve和ResolveMatch用于通过 EndpointReference 查询具体的传输地址。四、ONVIF 中的具体应用在 ONVIF 规范中WS-Discovery 用于设备发现阶段是 ONVIF 交互流程的第一步。典型发现流程时序图┌──────────────┐ ┌──────────────┐ │ 客户端软件 │ │ ONVIF 摄像头 │ │ (NVR/VMS) │ │ (IPC) │ └──────┬───────┘ └──────┬───────┘ │ │ │ ① Probe 探测请求 (多播到 239.255.255.250:3702) │───────────────────────────────────────── │ │ │ ② ProbeMatch 响应 (单播返回给客户端) │ 包含: XAddrs (设备服务地址URL) │ ───────────────────────────────────────│ │ │ │ ③ 通过 XAddrs 获取设备能力 (GetCapabilities) │───────────────────────────────────────── │ │ │ ④ 获取媒体地址、RTSP流地址等 │ ───────────────────────────────────────│流程步骤详解① Probe 探测客户端如 VMS 软件构造一个 Probe SOAP 消息Types 字段通常设为dn:NetworkVideoTransmitter网络视频发射器即 IP 摄像机或tds:Device通过 UDP 多播发送到239.255.255.250:3702。② ProbeMatch 响应网络内所有 ONVIF 设备接收该消息匹配条件的设备以单播方式回复 ProbeMatch。响应中的XAddrs字段包含设备的 Device Service 地址通常形如http://192.168.1.100/onvif/device_service。③ GetCapabilities 能力查询客户端拿到 XAddrs 后通过 HTTP/SOAP 调用GetCapabilities接口获取设备支持的服务能力Media、PTZ、Imaging、Events 等及各自的服务地址。此阶段通常需要通过 WS-UsernameToken 进行认证。④ 获取媒体流信息客户端再调用 Media Service 的GetProfiles、GetStreamUri等接口最终获取到 RTSP 播放地址如rtsp://192.168.1.100:554/Streaming/Channels/101从而开始拉取实时视频流。五、Scopes 作用域机制ONVIF 对 WS-Discovery 的 Scopes 字段做了扩展定义用于描述设备的属性。常见 Scopes 包括onvif://www.onvif.org/type/video_encoder— 设备类型onvif://www.onvif.org/hardware/model— 硬件型号onvif://www.onvif.org/name/name— 设备名称onvif://www.onvif.org/location/location— 安装位置onvif://www.onvif.org/Profile/Streaming— 支持的 Profile客户端可以在 Probe 中指定 Scopes 过滤条件只发现符合特定属性的设备。六、实现要点与注意事项网络要求由于依赖多播WS-Discovery 通常只能在同一广播域子网内工作。跨路由器的场景需路由器支持多播转发或使用 Discovery Proxy。MessageID 与 RelatesTo每条 SOAP 消息带有唯一的 MessageIDUUID 形式响应消息通过 RelatesTo 字段关联到请求用于去重和匹配。响应延迟为避免大量设备同时回复造成网络风暴规范要求设备在 0 到 APP_MAX_DELAY默认 500ms之间的随机时间后再回复。安全性WS-Discovery 本身不做认证任何设备都可回复。因此发现后必须通过 ONVIF 的 WS-Security用户名令牌进行认证才能访问设备功能。防火墙需要放行 UDP 3702 端口以及多播流量。七、常用开发库实现 ONVIF WS-Discovery 时常用的库和工具包括gSOAPC/C— ONVIF 官方推荐的 SOAP 框架含 wsdd 插件python-ws-discovery / onvif-zeepPythononvif-java、onvif-nvcJavaONVIF Device Manager、ONVIF Device Test Tool— 常用测试工具