1. onvif是啥?
摄像头在我们的⽇常⽣活中可以说时随处可见。⽽在当下的时代,⼤多数摄像头都已经⽹络化,早期的⽹络摄像机硬件提供商都采⽤私有协议进⾏通讯。但随着时代的发展,摄像头的应⽤场景越来越多,各个摄像头的⼚商也是百花齐放。私有协议终究会被淘汰。
为了解决这⼀困境,安讯⼠联合博世及索尼公司,共同制定了onvif(Open Network Video Interface Forum,开放型⽹络视频接⼝论坛)协议。
2. onvif可以做什么?
onvif协议涵盖了设备发现、设备配置、事件、PTZ控制、视频分析和实时流媒体直播功能,以及搜索,回放和录像录⾳管理功能。 ONVIF规范中设备管理和控制部分所定义的接⼝均以Web Services的形式提供。每⼀个⽀持ONVIF规范的终端设备均须提供与功能相应的Web Service。ONVIF中的其他部分⽐如⾳视频流则通过RTP/RTSP进⾏。 指纹读取器
总结onvif协议的开发公式:ONVIF = 服务端 + 客户端 =(Web Services + RTSP)+ 客户端 = ((WSDL + SOAP) + RTSP) + 客户端所以我们先来看看onvif开发中涉及到的⼀些技术框架 Web Services
Web Services是⼀种跨编程语⾔和跨操作系统平台的远程调⽤技术 ,可采⽤Http、SMTP等协议来在客户端和服务端之间传输数据。其中XML 被⽤做数据描述的语法,SOAP⽤于消息传递,WSDL⽤来描述服务。
onvif是建⽴在Web Services标准上的,定义在onvif标准⾥的所有配置服务都表⽰为Web Services操作,并在WSDL中定义,使⽤HTTP作为通信机制。
WSDL
WSDL(Web Service Description Language),Web services 描述语⾔。⽤于描述Web服务和说明如何与Web服务通信的XML语⾔,为⽤户提供详细的接⼝说明书。
WSDL ⽂档是利⽤这些主要的元素来描述某个 web service 的:
<portType>: web service 执⾏的操作,可以把 <portType> 元素⽐作传统编程语⾔中的⼀个函数库(或⼀个模块、或⼀个类)。
<message>: web service 使⽤的消息,通信消息的数据结构的抽象类型化定义。使⽤Types所定义的类型来定义整个消息的数据结构。message ⽤来定义每个soap服务的⼊参和出参,包括参数名,参数类型信息。(有点类似函数签名)。
<types>: web service 使⽤的数据类型定义,为了最⼤程度的平台中⽴性,WSDL 使⽤ XML Schema 语法来定义数据类型。
<binding>: web service 使⽤的通信协议。
wsdl实例:
基于Web Services的开发原理.png
上图对onvif基于Web Services开发的基本原理进⾏了⼀个概括。
6. ⼀般的onvif协议开发流程
1. 获取所需要的wsdl;
2. WSDL编译⼯具能通过WSDL⽂件⽣成与平台相关的代码;
3. 封装实现客户端业务逻辑;