20230504-onvif协议快速入门

1. 简介

onvif 最初的名称来自open network video interface forum 开放网络视频接口论坛,的首字母缩写,由于标准的范围扩展到视频应用程序之外,因此删除了 开放网络视频接口论坛 的名称,onvif 网络视频协议的出现,解决了不同厂商之间开发的各类设备不能融合使用的难题,提供了统一的网络视频开发标准,即最终能够通过onvif 这个标准化的平台实现不同产品之间的集成

onvif 主要是为网络视频产品提供标准化网络开放式接口,onvif 利用it 技术,例如soap rtp motion jpeg mpeg-4 和 h.264 视频解码功能,onvif 此后发布的规范2.0版本不仅具备存储功能,还具备分析功能,2018年10月,onvif 发布了profile T 支持H.265 视频解码功能

onvif 规范作用

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

onvif 规范的实现

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

onvif 诡诞的优势

协同性 不同厂商所提供的产品,均可以通过一个统一的语言来进行交流,方便了系统的集成

灵活性 终端用户和集成用户不需要被某些设备的固有解决方案所束缚,大大降低了开发成本

质量保证,不断扩展的规范将由市场来导向,遵循规范的同时也满足了主流的用户需求

onvif 几个基本模块

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

2. 基于onvif 规范项目的开发基本流程

onvif 协议流程

客户端
请求服务

服务端

分析请求
处理请求
生成回应
soap 消息

服务端
回应请求

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

onvif 开发基本流程

获取WSDL 文件

通过gSOAP 编译为c c++ 文件

业务逻辑开发

编译发布

WSDL 文件

webservices description language WSDL web 服务语言是一个用于精确描述 web service 的xml 格式,wsdl 描述web 服务的公共接口,这是一个基于xml 的关于如何与web 服务通讯和使用的服务描述,也就是描述与目录中列出的web 服务进行交互时需要绑定的协议和信息格式,通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务

WSDL 元素基于xml语法描述了与服务进行交互的基本元素

type 消息类型 数据类型定义的容器,它使用某种类型系统,如XSD

message 消息,通信数据的抽象类型化定义,它由一个或者多个part 组成

part 消息参数

operation 操作 对服务所支持的操作进行抽象描述,wsdl 定义了四种操作

  1. 单向 端点接受信息,
    请求 响应 端点接受消息,然后发送相关消息

要求-响应,端点发送消息,然后接受相关消息

通知 端点发送消息

port type 端口类型,特定端口类型的具体协议和数据格式规范

binding 特定端口类型的具体协议和数据格式规范

port 定义为绑定和网络地址组合的单个端点

service 相关端口的集合,包括其关联的接口、操作、消息等

SOAP 协议

simple object access protocol 简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于xml 标砖通用标记语言下的一个子集 的协议,它被设计成在web 上交换/传递结构化和固化的信息,包含下列元素

必需的envelope 元素,可把此xml 文档标识为一条soap 消息

可选的header 元素,包含头部信息

必需的body 元素,包含所有的调用和响应信息

可选的fault 元素,提供有关在处理此消息所发生错误的信息

在向web service 发送的soap请求中,body 元素中的字段需与wsdl 中的数据类型相符合,在构建soap的过程中,必须从wsdl 文件中获取并映射这一种对应关系,然而这样一个对应过程将是一个充满了重复性和机械性的,为了避免不必要的人工差错以及节约开发时间、一个名为gSOAP的编译工具应用而生

soap 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议 http 简单邮件传输协议,SMTP 多用途网际邮件扩充协议 MIME 它还支持从消息系统到远程过程调用 RPC 等大量的应用程序,soap 使用基于xml 的数据结构和超文本传输协议 http 的组合定义了一个标准的方法来使用internet 上各种不同操作环境中的分布式对象

把soap 绑定到http 提供了同时利用soap 的样式和分散的灵活性的特点以及http 的丰富的特征库的优点,在http 上传送soap 并不是说soap 会覆盖现有的http 语义而是http 上的soap 语义会自然的映射到http 语义,在使用http 作为协议绑定的场合中,RPC 请求映射到http 请求上,而RPC 应答映射到http 应答,然而,在rpc 上使用soap 并不仅限于http 协议绑定,soap 也可以绑定到TCP 和udp 协议上

gSOAP

gSOAP 编译工具提供了一个soap/xml 关于c/c++ 语言的实现,从而让c/c++语言开发web 服务或客户端程序的工作变得轻松了很多,绝大多数的c++ web 服务工具包提供一组api 函数类库来处理特定的soap 数据结构,这样就使得用户必须改变程序结构来适应相关的类库,与之相反,gsoap 利用编译器技术提供了一组透明化的soap api ,并将与开发无关的soap 实现细节相关的内容对用户隐藏起来

gSOAP 的编译器能够自动的将用户定义的本地化的c 或c++ 数据类型转变为复合xml 语法的数据结构,反之亦然,这样,只用一组简单的api 就将用户从soap 细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了

web service

soap 协议
TCP UDP 协议

IP 网络协议

物理链路层

onvif 规范的实现机制

web service 是基于网络的、分布式的模块化组件,执行特定的任务,web service 主要利用http 和soap 协议使数据在web 上传输,web 用户能够使用soap 和http 通过web 调用的方法来调用远程对象,即 xml 被用作数据描述的语法,soap 用于消息传递,wsdl 用来描述服务,基于web 服务开发原理如下

上图对web 服务开发的基本原理进行了概括,服务提供者 设备实现 onvif 的服务或者其他服务,这些服务从用基于xml 的wsdl 语言进行描述,然后,由wsdl 描述的文档将作为服务请求,客户端 实现或者整合的基础,wsdl 编译工具的使用简化了客户端的整合过程,wsdl 编译工具能生成与平台相关的代码即、客户端开发者可通过这些代码把web 服务整合到应用中

  1. web service 与视频监控

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

  1. 应用

PU 设备上线后,向cmu 发送hello 消息

cmu 需要搜寻设备时,向PU 发送probe 消息

cmu 与pu 进行信令交互,请求能力集,获取配置

cu 上线,向cmu 注册,建立连接

cmu 与cu 进行信令交互,传输设备列表

在cmu 的协调下,cu 同 pu 建立连接传输码流

在上述的场景中,通过onvif ,pu 与cmu 的交互方式发生了改变,cmu 不再与pu 保持长连接,遵循onvif 规范,信令以及消息内容有了统一的标准

CMU 即中心管理单位

PU 即监控前端单元,负责在cmu的控制下使用摄像机采集视频流,使用麦克风采集音频流,使用控制口采集报警信息,对摄像机云台镜头进行控制

cmu+pu 服务器 如安防相机

cu 监控系统的监控客户端单元


Profile 文件、附加组件及规范

onvif 致力于为安防行业提供并促进标准化接口,实现物理ip 安防产品有效交互操作性

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~