onvif协议介绍

您所在的位置:网站首页 onvif协议摄像头app onvif协议介绍

onvif协议介绍

2023-08-13 17:39| 来源: 网络整理| 查看: 265

1. onvif是啥?

摄像头在我们的日常生活中可以说时随处可见。而在当下的时代,大多数摄像头都已经网络化,早期的网络摄像机硬件提供商都采用私有协议进行通讯。但随着时代的发展,摄像头的应用场景越来越多,各个摄像头的厂商也是百花齐放。私有协议终究会被淘汰。

为了解决这一困境,安讯士联合博世及索尼公司,共同制定了onvif(Open Network Video Interface Forum,开放型网络视频接口论坛)协议。

2. onvif可以做什么?

onvif协议涵盖了设备发现、设备配置、事件、PTZ控制、视频分析和实时流媒体直播功能,以及搜索,回放和录像录音管理功能。

3. onvif开发技术框架

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 的:

: web service 执行的操作,可以把 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。: web service 使用的消息,通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。message 用来定义每个soap服务的入参和出参,包括参数名,参数类型信息。(有点类似函数签名)。: web service 使用的数据类型定义,为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。: web service 使用的通信协议。

wsdl实例:

对比传统的编程,glossaryTerms 是一个函数库,而 "getTerm" 是带有输入参数 "getTermRequest" 和返回参数 getTermResponse 的一个函数。

上文提到的onvif的各个功能模块的接口都有相对应的WSDL文档进行描述,可以在ONVIF官网「Network Interface Specifications」中查阅:https://www.onvif.org/profiles/specifications/

SOAP

SOAP(Simple Object Access Protocol,简单对象访问协议) 是一种基于 XML 的应用层协议,允许应用程序通过 HTTP、SMPT 来交换信息。

一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

必需的 Envelope 元素, Envelope 元素是 SOAP 消息的根元素,它可把 XML 文档定义为 SOAP 消息。可选的 Header 元素,包含头部信息,Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。必需的 Body 元素, Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息,包含所有的调用和响应信息。可选的 Fault 元素,提供有关在处理此消息所发生错误的信息。

SOAP 方法指的是遵守 SOAP 编码规则的 HTTP 请求/响应。

HTTP + XML = SOAP

SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。

HTTP POST 请求规定至少两个 HTTP 头:Content-Type 和 Content-Length。

POST /item HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8 Content-Length: 250

使用WSDL+XML的模式使得onvif协议具有良好的扩展性。

4. onvif协议规范

onvif定制了一系列的协议规范profiles,profiles协议协议要求客户端和设备彼此必须支持一组功能:

Profile A:用于门禁控制配置,适用于电子门禁系统中使用的产品。Profile C:用于门控和事件管理,适用于电子门禁系统中使用的产品。Profile D – 候选版:用于访问控制周边设备,适用于周边设备的输入界面,例如令牌读取器(用于读取卡,钥匙,移动电话或条形码),生物识别读取器(用于指纹识别),相机(用于虹膜,面部或车牌识别),按键,传感器(用于识别锁状态,门状态,温度或动作)和部分输出设备(例如锁,显示器和LED)。Profile G:用于存储和检索,专为基于IP的视频系统而设计,支持元数据的分析配置和信息查询,以及元数据的过滤和流式传输。Profile Q: 用于快速安装,基于IP的视频系统,其目的是在网络上提供Profile Q一致产品(例如,网络摄像机,网络交换机,网络监视器)的快速发现和基本配置。Profile S:用于基本视频流,专为基于IP的视频系统而设计。Profile T:适用于高级视频流,专为基于IP的视频系统而设计。

详情可见:https://www.onvif.org/ch/profiles/

5. onvif通讯原理

服务供应者(设备)负责提供Web Services(如各种onvif功能服务),这些服务通过WSDL进行描述,然后,服务请求(客户端)将WSDL文档将作为服务实现的基础。WSDL编译工具能通过WSDL文件生成与平台相关的代码,如可将WSDL文件转化为c/c++代码的gsoap。

服务端和客户端采用soap消息来进行数据通讯。对Web Services请求和应答都会以soap消息的形式进行传输。soap消息独立于任何的操作系统或协议,而且可以使用各种不同的网络传输协议进行传送(也就是说onvif协议是应用层协议)。onvif定义了一致的soap消息传输协议,用于描述Web Services。

基于Web Services的开发原理.png

上图对onvif基于Web Services开发的基本原理进行了一个概括。

6. 一般的onvif协议开发流程 获取所需要的wsdl;WSDL编译工具能通过WSDL文件生成与平台相关的代码;封装实现客户端业务逻辑;

转自:https://www.jianshu.com/p/16cda7c8cdcf



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3