Onvif协议:门外汉理解ONVIF协议

Onvif协议:门外汉理解ONVIF协议ONVIF 背景网络摄像机是网络设备 需要有通讯协议 早期的网络摄像机硬件提供商都采用私有协议 随着视频监控的网络化应用 产业链的分工将越来越细 有些厂商专门做摄像头 有些厂商专门做视频服务器 有些厂商则可能专门做平台等 然后通过集成商进行集成 提供给最终客户 私有协议无法胜任这种产业合作模式 行业标准化的接口由此应运而生 目前 网络摄像机的标准协议 国际标准上有三大类 ONVIF PSIA 和 HDCCTV 国内标准有国标 GB T28181 ONVIF 阵营日益壮大 与 PSIA HDCCTV 相比 无论是支持

ONVIF背景

网络摄像机是网络设备,需要有通讯协议,早期的网络摄像机硬件提供商都采用私有协议。

随着视频监控的网络化应用,产业链的分工将越来越细。有些厂商专门做摄像头,有些厂商专门做视频服务器,有些厂商则可能专门做平台等,然后通过集成商进行集成,提供给最终客户。私有协议无法胜任这种产业合作模式,行业标准化的接口由此应运而生。

目前,网络摄像机的标准协议,国际标准上有三大类:ONVIF、PSIA和HDCCTV,国内标准有国标GB/T28181。ONVIF阵营日益壮大,与PSIA、HDCCTV相比,无论是支持厂商的数目、厂商的知名度,还是市场占有率都遥遥领先。ONVIF标准的厂商覆盖芯片、视频前端设备、存储设备、系统平台、智能分析设备、门禁、传感设备等各个安防相关领域。我们说的IPC摄像头只是ONVIF标准里的一个分支而已,可见ONVIF的强大。

ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛)以公开、开放的原则共同制定开放性行业标准。

从ONVIF官网上可以了解到,为适应各种不同的参与级别,ONVIF提供了不同等级的会员企业资格,其中不乏国内外著名的设备制造商与集成商,国内的华为、海康威视、浙江大华、波粒科技和佳信捷也是ONVIF论坛的高级会员。

ONVIF技术框架

  • 获取IPC的基本信息(厂家信息、版本信息等);
  • 修改IPC的系统日期、时间;
  • 修改IPC的网络配置(IP、子网掩码等);
  • 获取/修改IPC摄像头的各种参数(视频分辨率、码率、帧率、OSD,云台控制等);

由于SOAP协议不适合传输音视频流,ONVIF规范中的传输音视频流采用的是已经很成熟的RTP/RTSP多媒体传输协议。

简单粗暴的理解:IPC的各种参数获取/配置都是通过ONVIF协议实现,而音视频流多媒体传输采用的是RTP/RTSP协议实现。

ONVIF技术规格

ONVIF协议中,有一系列Profile的技术规格。ONVIF之所以引入了Profile的概念,使得终端用户能够更容易区分各个Profile所支持的特性,而无需确定ONVIF技术规格不同版本间的兼容性。截止目前,已经发布的Profile包括Profile S/C/G/A/Q五种。

在这里插入图片描述
以上截图来源于官网中《ONVIF Profile Feature Overview》文档。从这个图能看出,各个Profile技术规格的发布是有时间先后顺序的,并不是一起发布。Profile S作为profile发布系列中的排头兵,于2011年发布,2016年做了一次修订,Profile C于2013年发布,之后再依次发布Profile G/A/Q。

以下是我对这些Profile的理解:

  • Profile S:「网络摄像机」的技术规格,包括如何发送音视频流,音视频编码器配置,PTZ控制、中继控制等。
  • Profile C:「门禁控制系统(PACS)设备」的技术规格。
  • Profile G:「视频储存和录像」的技术规格,包括视频储存,搜索,检索,以及媒体播放功能的技术规格。
  • Profile A:「常见的例行门禁控制功能」的技术规范,适用于负责授予和撤销员工凭证、创建和更新计划表,以及对系统内门禁控制权限进行更改的安保人员、接待员或人力资源专员等用户。
  • Profile Q:「传输层安全性(TLS)」的技术规格,该安全通信协议使ONVIF合标设备能够以不受篡改和窃听威胁的方式在网络上与客户通讯。

随着ONVIF的发展,我估计,ONVIF指导委员会(Steering Committee)在未来还会有后续的Profiles发布以规范其他技术规格。

跟IPC摄像头有关的主要是Profile S技术规格。

ONVIF接口规范

ONVIF接口被划分为不同模块,包括:设备发现、设备管理、设备输入输出服务、图像配置、媒体配置、实时流媒体、接收端配置、显示服务、事件处理、PTZ控制等。

注意:这里仅仅是列出常用接口,不是全部接口,每个模块的全部接口需要进入每个模块的WSDL中去看,点击任意一个接口就会自动跳转到对应的WSDL文档链接处。

比如说GetServices接口以上页面没有显示,但在http://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl中是的。所以想看全部的接口,还是得深入每个wsdl才行啊。

想要系统、全面的了解ONVIF的各个模块,可以阅读网上盛传的《ONVIF2.0协议珍藏版》。

开发流程(不要自己造轮子)

在这里插入图片描述
这里先简要的介绍下IPC客户端开发流程,具体怎么操作在专栏后续文章中会陆续展示。ONVIF协议既然是Web Services框架,那就不需要自己造轮子,ONVIF协议部分由gSOAP工具帮我们自动生成代码框架。

  • Onvif协议:理解什么是Web Services
  • Onvif协议:使用gSOAP创建SOAP调用实例
  • Onvif协议:门外汉理解ONVIF协议
  • Onvif协议:到底什么是ONVIF协议
  • Onvif协议:实现Probe命令来进行设备发现(discover)
  • Onvif协议:IPC客户端开发之获取设备基本信息
  • Onvif协议:IPC客户端开发之鉴权
  • Onvif协议:IPC客户端开发之获取设备能力
  • Onvif协议:IPC客户端开发之PTZ控制
  • Onvif协议:IPC客户端开发之获取实时预览的Url地址
  • Onvif协议:IPC客户端开发之图像抓拍
  • ONVIF Device Test Tool测试工具使用方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226187.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午7:38
下一篇 2026年3月17日 上午7:38


相关推荐

  • aliddns ipv6_linux系统下配置阿里DDNS(IPv6)

    aliddns ipv6_linux系统下配置阿里DDNS(IPv6)IPv6日渐完善,家里的宽带和手机也都分配了ipv6全球单播地址,手机分到了/64,宽带更是分到了/56。测试了一下运营商内外的连通性也都还可以,基本能跑满带宽,IPv6终于可以用起来了,个个都是公网,不用再渴求ipv4和搞内网穿透了。适用此教程适用于基于linux的各种系统,ubuntu、centos、openwrt、群晖等等,本文只介绍IPv6,不涉及IPv4。代码aliddnsipv6_a…

    2022年6月12日
    113
  • LeetCode – 538. Convert BST to Greater Tree

    LeetCode – 538. Convert BST to Greater Tree

    2022年3月6日
    57
  • 钟表代码分享

    今天分享一个时钟的源码,效果如图所示:最后附上源码<!DOCTYPEhtml><html><head><metahttp-equiv=”Content-Type”content=”text/html;charset=UTF-8″><title>时钟</title><styletype=”text/c…

    2022年4月4日
    76
  • RabbitMQ与CMQ的使用与实战

    RabbitMQ与CMQ的使用与实战RabbitMQ Rabbitmq 的启动和关闭 rabbitmq server 前台启动服务 rabbitmq server detached 后台启动服务 常用 rabbitmqctls 停止服务端口号是 5672 可视化端口 15672 Linux 中查看正在运行的端口号 netstat tulpn 终止与启动应用 Rabbitmqctls app 启动引用

    2026年3月19日
    1
  • idea正版在线激活码破解方法「建议收藏」

    idea正版在线激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    147
  • springboot项目实现mqtt客户端

    springboot项目实现mqtt客户端公司中项目大多是物联网项目 需要跟设备进行交互 用到的协议比较多 如 NB MQTT LWM2M COAP 等 项目中不可避免用到了 MQTT 协议 本文介绍 springboot 项目 MQTT 客户端实现 不多说直接上可执行代码 一 EMQ 官网 javasdkdemo 如果只需要用到一个客户端 可以参照下官网 demo 修改下应用用项目 1 pom xml 依赖引用 dependency groupId org eclipse paho groupId amp dependency

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号