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视频解码功能。

(1)ONVIF规范作用

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

(2)ONVIF规范的实现

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

(3)ONVIF规范的优势

  • 协同性:不同厂商所提供的产品,均可以通过一个统一的“语言”来进行交流。方便了系统的集成。
  • 灵活性:终端用户和集成用户不需要被某些设备的固有解决方案所束缚。大大降低了开发成本。
  • 质量保证:不断扩展的规范将由市场来导向,遵循规范的同时也满足主流的用户需求。

(4)ONVIF几个基本模块

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

 

2、基于ONVIF规范项目的开发基本流程

(1)onvif协议流程

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

(2)onvif开发基本流程

(3)WSDL文件

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

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

  • Type(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD)。
  • Message(消息):通信数据的抽象类型化定义,它由一个或者多个 part 组成。
  • Part:消息参数
  • Operation(操作):对服务所支持的操作进行抽象描述,WSDL定义了四种操作: 1.单向(one-way):端点接受信息;2.请求-响应(request-response):端点接受消息,然后发送相关消息;3.要求-响应(solicit-response):端点发送消息,然后接受相关消息;4.通知(notification):端点发送消息。
  • Port Type(端口类型):特定端口类型的具体协议和数据格式规范。
  • Binding:特定端口类型的具体协议和数据格式规范。
  • Port:定义为绑定和网络地址组合的单个端点。
  • Service:相关端口的集合,包括其关联的接口、操作、消息等。

(4)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的编译器能够自动的将用户定义的本地化的CC++数据类型转变为符合XML语法的数据结构,反之亦然。这样,只用一组简单的API就将用户从SOAP细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了。

(5)ONVIF规范的实现机制

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

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

 

3、Web Service与视频监控

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

 

4、应用

PU设备上线后,向CMU发送HELLO消息。

CMU需要搜寻设备时,向PU发送PROBE消息。

CMU与PU进行信令交互,请求能力集,获取配置。

CU上线,向CMU注册,建立连接。

CMU与CU进行信令交互,传输设备列表。

在CMU的协调下, CU同PU建立连接传输码流。

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

注:

CMU(Center Manager Unit),即中心管理单位。

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

CMU+PU ——服务器(如:安防相机)

CU(Client Unit),监控系统的监控客户端单元。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/King_weng/article/details/109818011