一.简介

1.onvif规范描述了网络视频的模型,接口,数据类型及数据交互的模式。并复用一些现有的标准,如WS系列标准等。

2.onvif规范的目标是是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(摄录前端,录像设备等)完全互通。

3.onvif规范中设备管理和控制部分所定义的接口均以web services的形式提供,设备作为服务提供者为服务端。

4.onvif规范涵盖了完全的XML及WDSL定义,每一个支持ONVIF的终端设备均须提供与功能相应的web service。

5.服务端与客户端的数据交互采用SOAP协议,其他部分比如音视频流通过RTP、RTSP进行。

二.实现机制

1.web service:

  web service是基于网络,分布式的模块化组件,执行特定的任务。它可以使将应用程序转换为网络应用程序,通过web进行发布,查找和使用。

ONVIF客户端开发 digest_应用程序

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

ONVIF客户端开发 digest_Web_02

  • 什么是web services
  • 应用程序组件
  • 使用开放协议进行通信
  • 是独立的并可自我描述
  • 可通过使用UDDI来发现
  • 可被其他应用程序使用
  • XML是web services的基础
  • 如何工作
  • 基础的ws平台是XML+HTTP
  • HTTP协议是最常用的因特网协议
  • XML提供了一种可用于不同的平台和编程语言之间的语言。
  • ws平台元素
  • SOAP简易对象访问协议
  • WSDL网络服务描述语言
  • UDDI是一种目录服务,通过它,企业可注册并搜索web services
  • 指通用的描述,发现以及整合
  • 是一种用于存储有关web services的信息的目录
  • 由WDSL描述的网络服务接口目录
  • 经由SOAP进行通讯
  • 被构建与Microsoft.NET平台中

2.WDSL

  WSDL(网络服务描述语言)基于XML的语言,用于描述web services以及如何对它们进行访问。

  • 什么是WSDL
  • 指网络服务描述语言
  • 使用XML编写
  • 是一种XML文档
  • 用于描述网络服务
  • 也可用于定位网络服务
  • WSDL文档
  • 文档结构
<definitions>

<types> <!-- ws使用的数据类型 -->
  definition of types......
</types>

<message> ws使用的消息
   definition of a message......
</message>

<portType> ws执行的操作
   definition of a port......
</portType>

<binding> ws使用是的通信协议
   definition of a binding......
</binding>

</definitions>
  • WSDL端口 <protType> 是最重要的WSDL元素,可描述一个ws,可被执行的操作,以及相关信息,可以将其比作编程语言中的函数库。
  • WSDL消息 <message>定义 一个操作的数据元素,每个消息均由一个或多个部件组成,可以看成编程语言中一个函数调用的参数。
  • WSDL        <types>定义ws使用的数据类型,使用XML Schema语法定义数据类型
  • WSDL 捆绑 <binding>为每个端口定义消息格式和协议细节
  • 两个属性:name; type
  • name定义名称
  • type指向用于binding的端口
  • soap:binding,两个属性:style,  transport
  • style可取值rpc,documnet
  • operation定义了每个端口提供的操作符

3.SOAP

  简单的基于XML的协议,它使应用程序通过http来交换信息。是用来访问网络服务的协议。

  • 什么是SOAP
  • 指简易对象访问协议
  • 是一种通信协议
  • 用于应用程序之间的通信
  • 用于发送信息的格式
  • 用来通过因特网进行通信
  • 独立于平台
  • 独立于语言
  • 基于XML
  • 很简单可扩展
  • 允许绕过防护墙
  • 语法
  • SOAP构建模块:一条SOAP消息就是一个普通的XML文档,包含以下元素:
  • 必需的Envelope元素,可把此XML文档标识为一条SOAP信息
  • 可选的Header元素,包含头部信息
  • 必需的Body元素,包含所有的调用和响应信息
  • 可选的Fault元素,提供有关在处理此消息所发生错误的信息
  • 语法规则
  • 必须用XML编码
  • 必须用SOAP Envelope命名空间
  • 必须用SOAP Encoding命名空间
  • 不能包含DTD引用
  • 不能包含XML处理指令
  • 基本结构
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
...
...
</soap:Header>

<soap:Body>
...
...
    <soap:Fault>
    ...
    ...
    </soap:Fault>
</soap:Body>

</soap:Envelope>
  • SOAP Envelope元素
  • 是SOAP的根元素,可把XML文档定义为SOAP消息
  • xmlns:soap命名空间,必须为上面的值
  • encodingStyle用于定义在文档中使用的数据类型,可出现在任何SOAP元素中,并会被应用到元素的内容及元素的所有子元素上,SOAP消息没有默认的编码方式
  • SOAP Header元素
  • 包含有关SOAP消息的应用程序专用信息(认证,支付等)。
  • 如果此元素被提供,则它必须是Envelope元素的第一个子元素
  • actor属性可被用于将Header元素寻址到一个特定的端点soap:actor="URI"
  • mustUnderstand属性可用于标识标题项,说明对于要对其进行处理的接受者来说是强制的还是可选的。soap:mustUnderstand="0|1"
  • SOAP Body元素
  • 包含打算传送到消息最终端点的实际SOAP消息
  • SOAP Fault元素
  • 用于存留SOAP消息的错误和状态信息
  • 如果已提供了Fault元素,则它必须是Body元素的子元素。
  • 在一条SOAP消息中,Fault元素只能出现一次
  • SOAP HTTP Binding

 4.实现

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

ONVIF客户端开发 digest_ONVIF客户端开发 digest_03

  • Web services给监控系统带来什么?
  • 设备的无关性,任何一个设备接入系统,不会对其他系统造成影响。
  • 设备的独立性,每一个设备只负责对收到的请求做出反馈,甚至不需要知道控制端的存在。
  • 管理的集中性,所有的控制由客户端来发起
  • ONVIF规范能给视频监控系统带来什么?
  • 抽象了功能的接口,统一了对设备的配置以及操作的方式
  • 控制端关心的不是设备的型号,而是设备所提供的Web Services
  • 规范了视频系统中Web Services范围之外的行为
  • ONVIF提供了各个模块的WSDL,拥有效率非常高的开发方式

 

三. ONVIF应用

1.名词说明

  • CMU(Center Manager Unit),中心管理单元。
  • PU(Prefocus Unit),监控前端单元,负责在CMU的控制下使用摄像机采集视频流,使用麦克风采集音频流,使用控制口采集报警信息,对摄像机云台镜头进行控制。
  • CU(Client Unit),监控系统的监控客户端单元,负责将PU采集到的视频流,音频流,报警信息提交给监控用户,并根据用户要求操作PU设备,如云台,镜头等。

2.传统视频监控系统在一个局域网的应用场景

  1. PU设备上线后,向CMU注册,建立链接。
  2. CMU与PU进行信令交互,请求能力集,获取配置。
  3. CU上线,向CMU注册,建立链接。
  4. CMU与CU进行信令交互,传输设备列表。
  5. CU向PU请求码流。

3.应用ONVIF规范后的对应场景

  1. PU设备上线后,向CMU发送HELLO消息。
  2. CMU需要搜寻设备时,向PU发送PROBE消息。
  3. CMU与PU进行信令交互,请求能力集,获取配置。
  4. CU上线,向CMU注册,建立链接。
  5. CMU与CU进行信令交互,传输设备列表。
  6. 在CMU协调下,CU同PU建立连接传输码流。

4.ONVIF带来的变化

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