ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

【Onvif从零实践】02、Onvif 核心功能模块介绍与 Profile 详解

【Onvif从零实践】02、Onvif 核心功能模块介绍与 Profile 详解 博客主页https://blog.csdn.net/wkd_007博客内容嵌入式开发、Linux、C语言、C、数据结构、音视频本文内容介绍 金句分享你不能选择最好的但最好的会来选择你——泰戈尔⏰发布时间⏰本文未经允许不得转发目录一、概述二、ONVIF 的服务架构NVT 与 NVC三、ONVIF 核心功能模块✨3.1 Device Service设备服务✨3.2 Media Service媒体服务✨3.3 Event Service事件服务✨3.4 PTZ Service云台控制服务✨3.5 Imaging Service图像服务✨3.6 Analytics Service分析服务四、ONVIF Profile配置文件✨4.1 Profile 是什么✨4.2 核心 Profile 详解Profile S —— 基础视频流Profile G —— 边缘存储与检索Profile T —— 高级视频流Profile M —— 元数据与分析事件Profile 对比总览✨4.3 Profile 的组合使用五、总结一、概述在上一篇文章中我们从 Onvif 客户端开发的角度认识了 Web Services、WSDL、SOAP 等基础概念了解到 ONVIF 基于 Web Services 架构以 WSDL 定义服务接口SOAP 协议传输控制信令媒体流则通过 RTP/RTSP 传输。但上一篇文章主要停留在“协议如何工作”的层面还没有深入回答两个关键问题ONVIF 到底定义了哪些服务每个服务能做什么什么是 ONVIF Profile不同 Profile 之间有什么区别这两个问题对于实际开发至关重要。第一个问题决定了“我能调用哪些接口”第二个问题决定了“设备支持哪些功能”。本文将从 Onvif 客户端开发的角度系统介绍 ONVIF 的核心功能模块与 Profile 规范。二、ONVIF 的服务架构NVT 与 NVC在深入各个服务之前需要先明确 ONVIF 系统中的两个核心角色NVTNetwork Video Transmitter网络视频发送器即 ONVIF 设备端如 IP 摄像机、视频编码器等它是服务提供者。NVCNetwork Video Client网络视频客户端即 ONVIF 客户端如视频管理软件VMS、NVR 等它是服务请求者。典型的网络视频系统中NVT 作为服务提供者对外暴露一系列标准化的 Web Services 接口NVC 作为服务请求者通过 SOAP 协议调用这些接口来控制设备、获取视频流。ONVIF 规范将所有服务划分为不同的类别每个类别有独立的 WSDL 定义和命名空间。Device Service 是所有其他服务的入口点其地址固定在http://onvif_host/onvif/device_service客户端通过 Device Service 获取设备支持的其他服务地址。三、ONVIF 核心功能模块ONVIF 定义的服务模块主要包括以下几类。其中Device、Media、Event 三个服务是 NVT 必须提供的其余为可选扩展。✨3.1 Device Service设备服务功能定位设备服务是 ONVIF 的核心入口服务用于控制设备并获取设备所支持的服务信息。主要能力设备信息获取GetDeviceInformation获取制造商、型号、固件版本、序列号等基本信息能力集获取GetCapabilities查询设备支持哪些服务及对应的服务地址服务列表GetServices获取所有可用服务的详细信息网络配置配置 IP 地址、DNS、网关等网络参数系统管理系统时间设置、固件升级、重启等操作用户管理创建、删除用户设置用户权限安全配置HTTPS 配置、访问策略等开发提示客户端开发的第一步通常是调用GetCapabilities从响应中解析出 Media、PTZ、Event 等服务的 XAddr服务地址后续调用这些服务时需要将请求发送到对应的地址。对应 WSDLdevicemgmt.wsdl✨3.2 Media Service媒体服务功能定位媒体服务用于配置视频、音频和元数据的实时流传输。主要能力获取配置文件GetProfiles获取设备的所有媒体配置文件Media Profile获取流地址GetStreamUri根据指定的 Profile Token 和传输协议RTSP/HTTP获取流媒体地址视频源配置GetVideoSources获取视频源信息分辨率、帧率等编码器配置GetVideoEncoderConfigurations获取视频编码参数H.264/H.265、码率、GOP 等音频配置配置音频编码格式、采样率等多播配置设置多播地址和端口OSD 配置设置字符叠加信息时间戳、设备名称等开发提示获取视频流是 ONVIF 客户端开发最核心的需求之一。典型流程为GetProfiles→ 选择 Profile →GetStreamUri→ 获得 RTSP 地址 → 交给播放器播放。每个 Media Profile 将一个视频/音频源映射到一个视频/音频编码器并关联 PTZ 和分析配置。对应 WSDLmedia.wsdlv1.x或 media2.wsdlv2.xProfile T 使用✨3.3 Event Service事件服务功能定位事件服务为客户端提供事件通知服务用于订阅和接收设备端产生的事件。主要能力事件属性查询GetEventProperties获取设备支持的事件类型和主题创建订阅CreatePullPointSubscription创建拉取点订阅拉取事件PullMessages从订阅中拉取事件消息事件通知支持 WS-BaseNotification 标准可通过 Basic Notification 或 Pull Point 两种模式接收事件典型事件类型移动侦测Motion Detection遮挡/篡改报警Tampering数字输入触发Digital Input视频丢失Video Loss分析事件Analytics Events如越界检测、区域入侵等开发提示ONVIF 事件机制支持两种模式。Pull Point 模式由客户端主动拉取实现相对简单Basic Notification 模式需要客户端提供通知接收端点Notification Consumer设备会主动推送事件。对于大多数客户端开发场景推荐先实现 Pull Point 模式。对应 WSDLevent.wsdl✨3.4 PTZ Service云台控制服务功能定位PTZ 服务用于控制 NVT 的云台转动和变焦。主要能力持续移动ContinuousMove控制云台按指定速度持续转动绝对定位AbsoluteMove将云台移动到指定的绝对位置相对定位RelativeMove以当前位置为基准移动指定偏移量停止Stop停止当前 PTZ 运动预置位SetPreset/GotoPreset/GetPresets/RemovePreset管理预置位状态查询GetStatus获取当前 PTZ 位置和运动状态开发提示PTZ 控制的核心概念是PTZ Node和PTZ Configuration。PTZ Node 代表物理 PTZ 设备的能力支持哪些运动、速度范围等PTZ Configuration 代表具体的控制配置。开发时需要先通过GetConfigurations获取 PTZ 配置的 Token再执行具体的控制操作。对应 WSDLptz.wsdl✨3.5 Imaging Service图像服务功能定位图像服务用于处理 NVT 的图像配置。主要能力图像参数获取/设置亮度、对比度、饱和度、锐度、色调曝光控制自动/手动曝光模式、曝光时间、增益白平衡自动/手动白平衡模式聚焦控制自动/手动聚焦聚焦位置移动宽动态范围WDR开/关及强度调节开发提示图像服务的接口分为 v1ver10和 v2ver20两个版本。v2 版本增加了更多高级功能如聚焦控制、WDR 等。Profile T 要求支持 Imaging v2。对应 WSDLimaging.wsdl✨3.6 Analytics Service分析服务功能定位分析服务用于控制 NVT 的视频分析功能。主要能力分析模块查询获取设备支持的视频分析模块及其参数分析配置配置分析规则区域、灵敏度、触发条件等分析事件与 Event Service 配合接收分析结果事件开发提示Analytics Service 的接口相对复杂实际开发中通常只需要通过 Event Service 接收分析事件即可不需要直接调用 Analytics Service。对应 WSDLanalytics.wsdl四、ONVIF Profile配置文件✨4.1 Profile 是什么ONVIF Profile 是一组经过认证的、固定的功能集合。设备声明支持某个 Profile就意味着它实现了该 Profile 规定的所有功能。Profile 的核心理念是确保互操作性——不同厂商的设备和客户端只要支持同一个 Profile就能保证基本的互通。ONVIF Profile 的命名方式也很有讲究。每个 Profile 用一个字母表示代表功能领域例如S代表Streaming流媒体G代表Georage/storaGe存储M代表Metadata元数据。当某个领域需要功能升级时会分配下一个字母而不是修改已有的 Profile——现有 Profile 永远不会被修改这是为了保证向后兼容性。✨4.2 核心 Profile 详解Profile S —— 基础视频流Profile S 是 ONVIF 最早发布、也是应用最广泛的 Profile。核心功能IP 摄像机/编码器通过网络向客户端发送视频数据客户端VMS/NVR可以配置、请求和控制视频流支持 PTZ 控制、音频流、中继输出、移动侦测事件基于 Media Service v1ver10/media/wsdl适用场景基础的 IP 视频监控系统。⚠️ 注意ONVIF 已宣布停止对 Profile S 的支持鼓励使用 Profile T因为目前绝大多数设备已支持 Profile T。Profile G —— 边缘存储与检索Profile G 专为 IP 视频系统中的存储、搜索、检索和回放而设计。核心功能支持在设备端如 IP 摄像机内置 SD 卡或客户端进行录像存储支持按时间范围、事件类型搜索录像支持录像回放和下载将视频应用从“流传输”扩展到“录制与存储”适用场景需要边缘存储或 NVR 回放功能的系统。对应 WSDLrecording.wsdl、replay.wsdl、search.wsdlProfile T —— 高级视频流Profile T 是 Profile S 的后继者代表了 ONVIF 在现代视频监控领域的最新能力。核心功能视频编码同时支持H.264 和 H.265HEVC两种编码格式H.265 可实现更高效的压缩率降低存储需求和带宽使用Media2 Service使用全新的 Media2 服务替代 Media v1提供更丰富的配置能力增强图像控制标准化控制聚焦、曝光、宽动态范围WDR等事件支持内置移动报警和篡改事件支持双向音频支持摄像头的音频输入和输出实现双向语音通信增强安全条件支持 HTTPS 流传输适用场景现代高清视频监控系统特别是需要 H.265、双向音频、高级图像控制的场景。对应 WSDLmedia2.wsdl、imaging.wsdlv20Profile M —— 元数据与分析事件Profile M 于 2021 年发布专门针对视频分析应用的元数据和事件传输进行标准化。核心功能标准化分析元数据的传输格式如对象边界框、分类标签等支持分析事件的订阅和通知扩展元数据和事件处理到门禁、云服务、IoT 平台等系统支持基于元数据的智能分析应用如人脸识别、越界检测、车牌识别适用场景AI 视频分析平台、智能安防系统。Profile 对比总览Profile名称含义核心功能对应 WSDL适用场景SStreaming基础视频流、PTZ、音频、移动侦测media.wsdl (v1)基础 IP 监控GstoraGe边缘存储、搜索、回放、录像recording/replay/search.wsdl录像回放系统TAdvanced sTreamingH.264/H.265、Media2、双向音频、增强安全media2.wsdl现代高清监控MMetadata分析元数据、对象边界框、智能事件analytics.wsdlAI 视频分析CDoorControl门禁控制、事件管理accesscontrol.wsdl门禁系统AAccess control凭证管理、时间表、访问规则accesscontrol.wsdl高级门禁Daccess controlDevices读卡器、生物识别、传感器等外围设备—门禁外围设备✨4.3 Profile 的组合使用不同 Profile 可以组合使用。例如一个典型的视频监控系统可以使用Profile S/T 处理视频流Profile G 处理录像回放Profile M 处理分析元数据构成一个完整的解决方案。对于客户端开发你需要根据目标设备实际支持的 Profile 来设计功能。例如如果设备只支持 Profile S那么你无法通过 ONVIF 获取 H.265 编码配置如果设备支持 Profile T你可以通过 Media2 Service 获取更丰富的媒体配置信息。五、总结本文从 Onvif 客户端开发的角度系统介绍了 ONVIF 的核心功能模块和 Profile 规范。核心功能模块方面ONVIF 定义了 Device、Media、Event、PTZ、Imaging、Analytics 等标准化服务。其中 Device Service 是入口Media Service 用于获取视频流Event Service 用于接收设备事件PTZ Service 用于云台控制。每个服务都有对应的 WSDL 文件在客户端开发中需要通过 gSOAP 工具解析 WSDL 并生成 C/C 调用代码。Profile 方面Profile 是 ONVIF 确保设备互通性的核心机制。Profile S 是基础视频流Profile T 是 Profile S 的现代替代者支持 H.265、Media2 等高级特性Profile G 处理录像存储与回放Profile M 面向 AI 分析场景。不同 Profile 可以组合使用开发时需要根据设备实际支持的 Profile 来设计功能。对客户端开发的实际影响调用GetCapabilities时响应中会包含设备支持的 Profile 信息可用于判断设备能力如果设备支持 Profile T应优先使用 Media2 Servicever20/media/wsdl而非 Media v1获取视频流时GetStreamUri返回的 RTSP 地址可直接交给 FFmpeg/VLC 等播放器使用如果文章有帮助的话点赞、收藏⭐支持一波谢谢 完成本文阅读后你应该能够列出 ONVIF 的 5 个以上核心服务模块及其用途说出 Device Service、Media Service、Event Service 各自的核心能力理解 NVT 和 NVC 的角色区别说出GetCapabilities、GetProfiles、GetStreamUri的调用顺序和作用说出 Profile S、G、T、M 各自的核心功能区别理解为什么 ONVIF 使用字母命名 Profile以及为什么现有 Profile 不会被修改知道 Profile T 支持 H.265以及它使用了 Media2 Service能够根据设备支持的 Profile 判断设备的能力范围参考资源ONVIF 官网 Profiles 总览https://www.onvif.org/profiles/ONVIF 官方博客 Profile 系列文章https://www.onvif.org/blog/ONVIF 核心规范Core Specificationhttp://developer.onvif.org/
返回列表