一.简介
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进行发布,查找和使用。
客户端会根据WSDL描述文档,生成一个SOAP请求消息,该要求会被嵌入在一个HTTP POST请求中,发送到Web services所在的Web服务器。Web Services请求处理器解析收到的SOAP请求,调用相应的Web services。然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把消息送回到客户端。
- 什么是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定义了每个端口提供的操作符
- 两个属性:name; type
- 文档结构
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构建模块:一条SOAP消息就是一个普通的XML文档,包含以下元素:
- 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请求的形式完成控制操作。
- 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.传统视频监控系统在一个局域网的应用场景
- PU设备上线后,向CMU注册,建立链接。
- CMU与PU进行信令交互,请求能力集,获取配置。
- CU上线,向CMU注册,建立链接。
- CMU与CU进行信令交互,传输设备列表。
- CU向PU请求码流。
3.应用ONVIF规范后的对应场景
- PU设备上线后,向CMU发送HELLO消息。
- CMU需要搜寻设备时,向PU发送PROBE消息。
- CMU与PU进行信令交互,请求能力集,获取配置。
- CU上线,向CMU注册,建立链接。
- CMU与CU进行信令交互,传输设备列表。
- 在CMU协调下,CU同PU建立连接传输码流。
4.ONVIF带来的变化
- PU与CMU的交互方式发生了改变,CMU不再与PU保持长连接。
- 遵循ONVIF规范,信令以及消息内容有了统一的标准。
参考:http://www.cnblogs.com/endv/p/6828718.html
https://blog.csdn.net/ghostyu/article/details/8162193