ONVIF简介

2023-05-16

一、什么是ONVIF ?

ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。

ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。ONVIF规范涵盖了完全的XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行 。

由于Web Services采用WSDL+XML模式,WSDL是服务端用来向客户端描述自己实现哪些请求、发送请求时需要带上哪些参数xml组织格式 SOAP是客户端向服务端发送请求时的参数的xml组织格式,使ONVIF规范的后续扩展不会遇到太多的麻烦。XML极强的扩展性与SOAP协议开发的便捷性将吸引到更多的人来关注和使用ONVIF规范。


拿IPC摄像头来说,IPC是Web Services服务端,其提供的WEB服务接口需符合ONVIF协议规范(这些接口在ONVIF规定的WSDL文档中),我们开发的客户端通过这些ONVIF规范接口跟IPC通讯,比如:

1.获取IPC的基本信息(厂家信息、版本信息等)

2.修改IPC的系统日期、时间

3.修改IPC的网络配置(IP、子网掩码等)

4.获取/修改IPC摄像头的各种参数(视频分辨率、码率、帧率、OSD,云台控制等)

由于SOAP协议不适合传输音视频流,ONVIF规范中的传输音视频流采用的是已经很成熟的RTP/RTSP多媒体传输协议。简单粗暴的理解:IPC的各种参数获取/配置都是通过ONVIF协议实现,而音视频流多媒体传输采用的是RTP/RTSP协议实现。在安防、监控系统急速发展的今天,效率和质量的领先所带来的价值不言而喻。ONVIF协议提供了这样的潜质。

二、ONVIF规范的实现机制

1、web service

Web Service是基于网络的、分布式的模块化组件,执行特定的任务。Web Service 主要利用 HTTP 和 SOAP 协议使数据在 Web 上传输。Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象。 

 2、wsdl文件

客户端根据 WSDL 描述文档,会生成一个 SOAP 请求消息,该请求会被嵌入在一个HTTP POST请求中,发送到 Web Services 所在的Web 服务器。Web Services 请求处理器解析收到的 SOAP 请求,调用相应的 Web Services。然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP应答的方式把信息送回到客户端。

WSDL是Web services 描述语言(Web Service Description Language)的缩写。是一个用来描述Web服务和说明如何与Web服务通信的XML语言,为用户提供详细的接口说明书。

3、soap协议

SOAP是Simple Object Access Protocol的缩写。是基于XML的一种协议。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:


必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
可选的 Fault 元素,提供有关在处理此消息所发生错误的信息


在向Web Service发送的SOAP请求中,Body元素中的字段需与WSDL中数据类型的相符合。在构建SOAP的过程中,必须从WSDL文件中获取并映射这一种对应关系。然而这样一个对应过程将是充满了重复性和机械性的,为了避免不必要的人工差错以及节约开发时间,一个名为gSOAP的编译工具应运而生。
gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。通过将WSDL文件解析序列化为C/C++文件,最小化了Web Service的开发过程。

4、Web Service 开发流程

5、Web Service与视频监控

ONVIF规范向视频监控引入了Web Service的概念。设备的实际功能均被抽象为了Web Service的服务,视频监控系统的控制单元以客户端的身份出现,通过Web请求的形式完成控制操作。

6、Web Service能给视频监控系统带来什么?

设备的无关性,任何一个设备接入系统,不会对其他系统造成影响。
设备的独立性,每一个设备只负责对接收到的请求做出反馈,甚至不需要知晓控制端的存在。
管理的集中性,所有的控制由客户端来发起。

抽象了功能的接口。统一了对设备的配置以及操作的方式。 控制端关心的不是设备的型号,而是设备所提供的Web Service 规范了视频系统中Web Service范围之外的行为。除此之外ONVIF提供了各个模块的WSDL,拥有效率非常高的开发方式。

三、ONVIF规范的内容

设备发现
设备管理
设备输入输出服务
图像配置
媒体配置
实时流媒体
接收端配置
显示服务
事件处理
PTZ控制
其他

四、基于ONVIF规范的项目的开发

1.、获取onvif官网上的onvif模块的wsdl文件

DeviceMgmt(设备管理)
https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl
DeviceIO(设备IO服务)
http://www.onvif.org/onvif/ver10/deviceio.wsdl
Event(事件处理)
http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl
Analytics(视频分析)
http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl
AnalyticsDevice(分析设备)
http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl
Display(显示服务)
http://www.onvif.org/onvif/ver10/display.wsdl
Imaging(图像配置)
http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl
Media(媒体配置)
https://www.onvif.org/ver10/media/wsdl/media.wsdl
PTZ(PTZ控制)
http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
Receiver(接收端配置)
http://www.onvif.org/onvif/ver10/receiver.wsdl
RemoteDiscovery(设备发现)
https://www.onvif.org/ver10/networ/wsdl/remotediscovery.wsdl
Recording(录像控制)
http://www.onvif.org/onvif/ver10/recording.wsdl
Replay(重放控制)
http://www.onvif.org/onvif/ver10/replay.wsdl
Search(记录搜索)
http://www.onvif.org/onvif/ver10/search.wsdl
对应各模块文档:
https://www.onvif.org/onvif/ver20/util/operationIndex.html

2.、通过gSOAP编译为c/c++文件。

下载gsoap:   https://sourceforge.net/projects/gsoap2​​​​​​

安装OpenSSL(ubantu上编译需要指明连接库的路径):/index.html

3.、业务逻辑开发,音视频流可以采用ffmpeg开发

4.、编写main函数调用接口,修改参数等,发布onvif版本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ONVIF简介 的相关文章

  • ONVIF简介

    一 什么是ONVIF ONVIF规范描述了网络视频的模型 接口 数据类型以及数据交互的模式 并复用了一些现有的标准 xff0c 如WS系列标准等 ONVIF规范的目标是实现一个网络视频框架协议 xff0c 使不同厂商所生产的网络视频产品 x
  • Onvif鉴权实现方式

    Onvif鉴权实现方式 Digest 61 B64ENCODE SHA1 B64DECODE Nonce 43 Date 43 Password gsoap中digest生成代码 xff1a int soap wsse add Userna
  • linux下移植onvif至arm环境

    前言 onvif是一种网络摄像头协议 xff0c linux网络摄像头这一块是需要移植onvif协议的 xff0c 整个移植过程是这样的 xff0c 首先onvif协议是依赖于gsoap的 xff0c 所以需要先将gsoap编译安装 xff
  • java 通过onvif抓取海康摄像头图片

    java 通过onvif抓取海康摄像头图片 文章目录 java 通过onvif抓取海康摄像头图片前言一 把onvif jar放到自己的maven仓库二 pom文件引入jar包三 测试代码四 运行中的变量五 参考链接地址 前言 网上也有类似的
  • ONVIF测试工具 ONVIF Device Test Tool的使用

    ONVIF测试工具 ONVIF Device Test Tool的使用 双击 打开软件 选择当前网络 点击 Discover Devices 进行搜索 可以看到搜索到一个设备
  • gsoap学习笔记一

    本文章是对gsoap中生成的cpp类型的代码框架的应用 因为要实现一些ONVIF规范中的一些功能 所以选择了gsoap生成代码框架 但是发现好多博客上都是生成的C的代码框架 使用起来很麻烦 而且引用插件功能的时候 什么时候需要修改文件内容
  • Onvif协议学习:8、设备校时

    Onvif协议学习 8 设备校时 文章目录 Onvif协议学习 8 设备校时 1 编码流程 2 注意事项 3 示例代码 原文链接 https blog csdn net benkaoya article details 72486511 1
  • cgo+gSoap+onvif学习总结:2、wsl编译安装gSoap

    cgo gSoap onvif学习总结 2 wsl编译安装gSoap 文章目录 cgo gSoap onvif学习总结 2 wsl编译安装gSoap 1 前言 2 gSoap编译安装 wsl环境编译安装 3 最后 1 前言 结合官网安装教程
  • Go语言实现Onvif服务端:1、提供网络发现服务

    Go语言实现Onvif服务端 1 提供网络发现服务 文章目录 Go语言实现Onvif服务端 1 提供网络发现服务 1 前言 2 代码 3 结果 1 前言 该功能我们之前学习Onvif协议和WS Discovery时已经有了一定的基础了 接下
  • Go语言实现Onvif客户端:7、获取摄像头快照

    Go语言实现Onvif客户端 7 获取摄像头快照 文章目录 Go语言实现Onvif客户端 7 获取摄像头快照 1 代码 2 结果 3 查看 1 代码 摄像头对该时刻可以进行快照抓拍 抓拍结果可以以url地址的形式提供 在浏览器上可以直接查看
  • cgo+gSoap+onvif学习总结:5、获取profileToken、rtsp流地址、快照地址及cgo程序signal SIGSEGV: segmentation violation解决方法

    cgo gSoap onvif学习总结 5 获取profileToken rtsp流地址 快照地址及cgo偶发signal SIGSEGV segmentation violation分割违例解决方法 文章目录 cgo gSoap onvi
  • 以http协议实现onvif协议并完成对IPC摄像头的监控

    文章目录 目录 文章目录 前言 1实现http连接 2 获取设备编码参数 3 设置摄像头相关参数 总结 前言 因为工作上的原因 需要接入IPC摄像头 实现监控功能 因而开始了对于IPC摄像头的学习之路 因为要做到通用 所以目光直接锁定了on
  • cgo+gSoap+onvif学习总结:1、方案初衷、资料收集及cgo实现helloworld

    cgo gSoap onvif学习总结 1 方案初衷 资料收集及cgo实现helloworld 文章目录 cgo gSoap onvif学习总结 1 方案初衷 资料收集及cgo实现helloworld 1 前言 2 资料收集 3 cgo h
  • Onvif协议学习:12、修改分辨率

    Onvif协议学习 12 修改分辨率 文章目录 Onvif协议学习 12 修改分辨率 1 原理简介 2 函数接口 3 编码流程 4 示例代码 原文链接 https blog csdn net benkaoya article details
  • 如何使用 WS-UsernameToken 获取结果摘要?

    我有来自以下文档ONVIF 程序员指南 我目前正在尝试重现结果摘要使用指南中给出的相同条目 这是我的代码 private string GenerateHashedPassword string nonce string created s
  • ONVIF #PasswordDigest 的公式是什么

    我正在研究发送 GetDeviceInformation 的 ONVIF 这是必需的 wsse UsernameToken 经过查资料权威 有两个公式 1 通过 ONVIF Core Specification v241 pdf 5 12
  • C# 中的 Onvif 事件订阅

    我正在用 C 实现 ipCamera 编码器管理系统 该系统将管理来自多个供应商的多个 ipCamera 和 或编码器 使用 Onvif 代替每个 ipcamera 或编码器 sdk 将是一个好处 管理系统的关键概念之一是监听来自摄像机的事
  • C# 中的 ONVIF api 捕获图像

    我有一个 ONVIF 网络摄像机 我想从相机捕获图像 以便可以处理该图像并将其保存到文件系统 我发现有一个onvif api提供了一个方法GetSnapshotUri这应该为我提供图像快照 http www onvif org onvif
  • 基于ONVIF wsdl生成Java webservice(自顶向下方法)

    我想为像相机这样的设备生成服务器代码 这些设备有一个标准协议 称为ONVIF https www onvif org它发布了一些流行的 WSDL 文档 所以我必须从 ONFIV 的 WSDL 文档生成一个接口和骨架 当我使用 wsdl2ja
  • Onvif - 尝试了解它是如何工作的

    首先 我完全没有使用ONVIF的经验 我在一家公司获得了奖学金 并被要求与它一起工作 控制一些相机并从它们那里获取照片 但他们也不知道它是如何工作的 所以没有人可以帮助我很多 我正在阅读 ONVIF 网页上提供的规范 但我不太明白 我知道我

随机推荐

  • C语言中常见的两个比较字符串是否相等的函数strcmp和strncmp

    函数 xff1a strcmp和strncmp strcmp 使用格式 xff1a include lt string h gt int strcmp const char s1 const char s2 设这两个字符串为str1 xff
  • sprintf和printf 用法的区别

    printf 的作用是标准化输出 xff0c 默认的对象是标准输出缓冲区 xff0c 要有一定的条件才能把缓冲区里面的数据输出 sprintf 作用是格式化输出函数 xff0c 保存字符串到缓冲区中 xff0c 起到拼接字符串的作用 功能
  • select函数实现TCP双向通信

    服务器通信实现代码 include 34 myhead h 34 tcp双向通信 服务器的代码 多路复用使用思路 xff1a 1 思考要监测什么文件描述符 新的套接字 接收 键盘 发生 2 监测新套接字的读就绪 监测键盘的读就绪 int m
  • C++调用构造函数,后面用冒号添加变量的作用

    C 43 43 调用构造函数和成员函数后 xff0c 在函数的后面添加一个冒号的含义 首先知道初始化机制中 xff0c 有两种赋值机制 xff0c 有赋值运算符赋值和括号赋值 xff1a 传统赋值 xff1a int a 61 10 int
  • 第六篇,STM32脉冲宽度调制(PWM)编程

    1 PWM概念 PWM叫脉冲宽度调制 Pulse Width Modulation xff0c 通过编程控制输出方波的频率和占空比 高低电平的比例 xff0c 广泛应用在测量 xff0c 通信 xff0c 功率控制等领域 呼吸灯 xff0c
  • ovn 配置逻辑路由器实现三层转发

    本文使用ovn搭建一个三层转发的环境 xff0c 拓扑图如下 image png 两个虚拟交换机ls1和ls2 xff0c 端口ip网段分别为 10 10 10 0 24和 10 10 20 0 24 虚拟交换机上分别连接两个vm 使用na
  • 第十篇,STM32串口蓝牙编程

    1 串口蓝牙概念 串口蓝牙是一个蓝牙模块 xff0c 内部有蓝牙模块和程序 xff0c 可以进行蓝牙通信 xff0c 同时提供一个串口接口 xff0c 通过串口可以配置蓝牙模块进行数据传输 2 使用串口3连接蓝牙模块 3 手机上安装蓝牙调试
  • 第十四篇,STM32的CAN总线通信

    1 CAN总线的概念 CAN指的是控制器局域网网络 Controller Area Network xff0c 由德国博世汽车电子厂商开发出来 CAN使用差分信号 xff0c 具有较强的抗干扰能力和传输稳定性 CAN属于多主通信 xff0c
  • OpenCV图像处理学习十九,像素重映射cv::remap

    一 像素重映射概念 重映射就是把输入图像中各个像素按照制定的规则顺序映射到另外一张图像的对应位置上去 xff0c 形成一张新的图像 二 像素映射API函数接口 cv remap xff08 InputArray src 输入图像 Outpu
  • OpenCV图像处理学习二十一,直方图比较方法

    一 直方图比较 直方图比较是对输入的两张图像进行计算得到直方图H1与H2 xff0c 归一化到相同的尺度空间 xff0c 然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度 xff08 每张图像都有唯一的直方图与之对应 xff0
  • 嵌入式FreeRTOS学习八,xTaskCreate创建任务的细节以及恢复中断任务实现

    一 创建任务函数xTaskCreate 任务也不是很复杂的东西 xff0c 任务也就是一个函数xTaskCreate 简单得说 xff0c 创建一个任务 xff0c 你得提供它的执行函数 xff0c 你得提供它的栈的大小 xff0c 函数的
  • 嵌入式FreeRTOS学习一,FreeRTOS概述和代码结构

    一 FreeRTOS是什么 FreeRTOS 是由 Real Time Engineers Ltd 出品 xff0c 是一款市场领先的 RTOS 现在已经支持几十种 处理器架构 Free即免费的 xff0c RTOS全称是 Real Tim
  • 嵌入式FreeRTOS学习二,FreeRTOS任务的创建和删除

    一 任务的创建和删除 1 1 函数xTaskCreate 此函数用来创建一个任务 xff0c 任务需要RAM来保存与任务有关的状态信息 任务控制块 xff0c 任务也需要一定的RAM 来作为任务堆栈 如果使用函数xTaskCreate 来创
  • 嵌入式FreeRTOS学习五,FreeRTOS任务调度器

    四 调度器 FreeRTOS 操作系统支持三种调度方式 xff1a 抢占式调度 xff0c 时间片调度和合作式调度 实际应用主要是抢占式调度和时间片调度 xff0c 合作式调度用到的很少 启动调度器的API函数vTaskStartSched
  • 嵌入式FreeRTOS学习九,任务链表的构成,TICK时间中断和任务状态切换调度

    一 tskTaskControlBlock 函数结构体 在tskTaskControlBlock 任务控制块结构体中 xff0c 其中有任务状态链表和事件链表两个链表成员 xff0c 首先介绍任务状态链表这个结构 xff0c 这个链表通常用
  • 嵌入式FreeRTOS学习十,任务调度和任务就绪链表任务调度过程

    一 main函数里面的栈是哪里分配的 main函数里面用到的栈 xff0c 假设为msp 是汇编代码里面设定的 xff0c 对于STM32F103 在汇编代码里的向量表设置了一个栈 initial sp 那这个栈是给谁用的呢 xff1f 可
  • ovn 通过网关虚拟路由器连接外部网络

    本文实验如何通过ovn的网关逻辑路由器将ovn网络连接到外部网络 前面讲过ovn的逻辑路由器是分布式的 xff0c 这意味着它没有绑定到某个节点上 xff0c 而是存在于所有节点上的 xff0c 同时它是通过每个节点的openflow流表来
  • 嵌入式FreeRTOS学习十一,深入理解任务调度机制

    一 任务调度机制 可抢占 xff1a 高优先级的任务先运行时间片轮转 xff1a 同优先级的任务轮流执行空闲任务礼让 xff1a 如果有同是优先级为0的其他就绪任务 xff0c 空闲任务主动放弃一次运行机会函数调用vTaskDelay xD
  • SOAP传输协议

    一 HTTP传输协议 超文本传输协议 xff08 HyperText Transfer Protocol xff0c 缩写 xff1a HTTP xff09 xff0c 它是基于请求 响应的模式协议 xff0c 客户端发出请求 xff0c
  • ONVIF简介

    一 什么是ONVIF ONVIF规范描述了网络视频的模型 接口 数据类型以及数据交互的模式 并复用了一些现有的标准 xff0c 如WS系列标准等 ONVIF规范的目标是实现一个网络视频框架协议 xff0c 使不同厂商所生产的网络视频产品 x