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

发布时间:2026/9/12 20:56:03

【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/
延伸阅读

更多相关文章

2026/9/12 20:56:03

算法 Day 2 滑动窗口 + 栈 / 单调栈

连续区间 条件动态变化 → 想滑动窗口。 后进先出 / 配对 / 最近一个更大或更小元素 → 想栈,尤其是单调栈。 复习: 给定一个有序数组: nums [1, 1, 2, 2, 2, 3, 4, 4]要求原地删除重复元素,并返回去重后的长度。 例如最终数组前…

2026/9/12 20:56:03

java-网络编程

在Java中进行网络通信时,使用TCP的方式进行传输,TCP在传输时使用字符流进行传输,所以我们在java中可以 这样写。在TCP通信过程中,网络环境的不稳定、对端异常关闭连接或数据读写超时,都可能触发各种异常。常见的异常包…

2026/9/12 20:56:03

uv cache prune --ci 是什么?CI 中如何缩小 uv 缓存体积

uv cache prune --ci 是什么?CI 中如何缩小 uv 缓存体积 【免费下载链接】uv An extremely fast Python package and project manager, written in Rust. 项目地址: https://gitcode.com/GitHub_Trending/uv/uv 如果你在 GitHub Actions 或 GitLab CI 中开启…

2026/9/12 21:56:07

YOLOv5交通标志检测:从数据集到部署的全流程实战解析

简介:基于YOLOv5的交通标志物检测完整项目,主要面向正在准备课程设计、期末大作业的计算机专业学生,以及希望上手目标检测实战的深度学习学习者。项目包含全部开发源码、已经训练完成的权重模型与完整的训练测试数据,环境依赖配置…

2026/9/12 21:56:07

树莓派Pico呼吸灯实战:MicroPython+PWM精准控光

1. 项目概述:为什么一个呼吸灯值得你花20分钟认真对待树莓派 Pico、MicroPython、PWM、LED——这四个词凑在一起,不是教科书里的抽象概念,而是我去年帮朋友调试智能台灯时,真正焊在面包板上、烧进芯片里、肉眼可见亮起来的第一块“…

2026/9/12 21:56:07

YOLOv5交通标志检测:从数据预处理到ONNX部署完整指南

简介:YOLOv5交通标志物检测完整工程包,面向计算机相关专业正在准备课程设计、期末大作业的学生,以及需要完整项目进行实战练习的深度学习学习者。项目以YOLOv5为检测框架,整合了源代码、训练好的权重模型、标注数据与训练配置&…

2026/9/12 21:56:07

Layui按钮级权限控制实战:从权限码设计到前端显隐方案

1. 需求来源与整体设计思路1.1 为什么后台管理系统必须做按钮级权限控制我最早接触layui的时候,其实也不太理解按钮权限这回事。菜单权限好理解,不同角色看到不同菜单,侧边栏渲染出来就不一样。但按钮权限是个更细的维度——同样是“编辑”按…

2026/9/12 21:51:07

Java智慧养老平台代码实战:工单闭环、Redis防抖与高并发优化

简介:一套基于SpringBoot的智慧养老平台完整Java源码,面向计算机、电子信息工程等专业学习者,适合作为毕业设计、课程设计及期末大作业。系统采用B/S架构与MVC模式,整合SpringBoot、Mybatis、Ajax、Vue等技术栈,覆盖前…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码