onvif协议

一、onvif介绍

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

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

2)ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。

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

3)onvif主页中文版:

Home - ONVIF Mandarinicon-default.png?t=N7T8https://www.onvif.org/ch/

4)Onvif Profiles

  ONVIF profiles 可以轻松实现ONVIF规范的设备与客户端相互兼容。ONVIF profiles协议要求客户端和设备彼此必须支持一组功能,去确保支持Profile S的客户端与设备能确实彼此兼容。同时支持Profile S的客户端与设备中,一些特定的功能,也必须在双方同时被支持的前提下,才可以实现。ONVIF网络接口规范定义了ONVIF Profile协议文件的基本功能(包含特定功能)。

  客户端和设备可以支持多个ONVIF profile协议; 例如,具有本地存储功能的网络摄像机可以同时符合Profile S和G协议。

  符合profiles协议是确保符合ONVIF一致性的方法。因此,只有符合协议的认证产品才被视为符合ONVIF规范的产品。

Profiles

说明

Profile A

用于电子准入控制系统,用于高级门禁控制配置

设备能进行信息检索(状态、事件)、实体配置如准入规则、证书、schedules(计划)等配置

客户端则可以通过网络使用Profile A 设备的上述功能

Profile C

用于电子准入控制系统,用于物理门禁控制配置

标准的设备和客户端适合于site information(站点信息), door access control(门禁控制), and event and alarm management(事件、报警管理)场景

Profile D

是一款专门针对访问控制外设接口

开发的目的是希望用ONVIF标准为外围设备,例如锁、资格/生物识别器、密码键盘、车牌识别摄像头、电话门禁、传感器和显示器等,提供互操作性

对之前发布的Profile A和Profile C的功能进行了补充,实现了IP电子访问控制系统内部的标准化通讯

Profile Q

提供了设备发现、基本配置功能的标准。用于简易安装与高级安防功能

设备(network camera, network switch, network monitor)能够被Profile Q 客户端通过网络快速发现、配置、控制

标准支持TLS交互方式

Profile G

同样也是为基于IP的视频系统设计,用于录制和存储

设备可以保存视频录像文件,Profile G 客户端可以通过网络配置、请求、控制 Profile G 设备录像数据的功能

还包括接收音频和metadata流的规范

Profile T

同样也是为基于IP的视频系统设计

设备支持H.264 and H.265 编码格式,成像设置, 报警事件,如运动和篡改检测

设备的强制规定包括onscreen display and metadata streaming(屏幕显示和元数据流)

客户端的强制规定包括PTZ控制

还包括HTTPS streaming, PTZ configuration, motion region configuration, digital inputs and relay outputs, and bidirectional audio for conformant devices and clients规范

注: 官方强调,Profile T规范不是对Profile S规范的取代,而是针对不同应用领域的扩展,当然两个标准也可以合并使用

Profile S

主要为基于IP的视频系统设计

设备(如IPC、视频编码器),一般用于传输视频流给 Profile S 客户端(如IVMS)

客户端具有通过网络配置、请求、控制 Profile S 设备视频流的功能

Onvif官网接口:Home - ONVIF Mandarin

  我们写的系统都是需要围绕 Profile 来进行编程的,因为一个设备至少要实现一个Profile的功能。每一个Profile都有一些必须实现的功能,所以呢他就有了一个 Requirement Levels 来标记我们必须要实现的一些功能,Requirement Levels在每一个Profile Specification文档中都有定义

Mandatory(M) :ONVIF设备或ONVIF客户端应实现的功能
Conditional(C):如果支持该功能,则应由ONVIF设备或ONVIF客户端实现的函数
Optional(O)     :可以由ONVIF设备或ONVIF客户端实现的功能

二、onvif规范的实现机制

1)Web service

     Web Service是基于网络的、分布式的模块化组件,执行特定的任务。Web Service 主要利用 HTTP 和 SOAP 协议使数据在 Web 上传输。Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象。

2)WSDL文件

    WSDL是Web services 描述语言(Web Service Description Language)的缩写。是一个用来描述Web服务和说明如何与Web服务通信的XML语言,为用户提供详细的接口说明书。 

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

3)SOAP协议

    SOAP的缩写为Simple Object Access Protocol,是基于XML的一种协议。

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

  • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
  • 可选的 Header 元素,包含头部信息
  • 必需的 Body 元素,包含所有的调用和响应信息
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

  在向Web Service发送的SOAP请求中,Body元素中的字段需与WSDL中数据类型的相符合。在构建SOAP的过程中,必须从WSDL文件中获取并映射这一种对应关系。然而这样一个对应过程将是充满了重复性和机械性的,为了避免不必要的人工差错以及节约开发时间,一个名为gSOAP的编译工具应运而生。
    gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。通过将WSDL文件解析序列化为C/C++文件,最小化了Web Service的开发过程。

4)Web Service与视频监控

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

 1.Web Service能给视频监控带来什么?

a) 设备的无关性,任何一个设备接入系统,不会对其他系统造成影响

b) 设备的独立性,每一个设备只负责对接收到的请求做出反馈,甚至不需要知晓控制端的存在

c) 管理的集中性,所有的控制由客户端来发起

 

 2.onvif规范能改视频监控带来什么?

a) 抽象了功能的接口,统一了对设备的配置以及操作的方式

b) 控制端关心的不是设备的型号,而是设备所提供的Web Service

c) 规范了视频系统中Web Service范围之外的行为

d) ONVIF提供了各个模块的WSDL,拥有效率非常高的开发方式

5)ONVIF规范的内容

  ONVIF协议接口由多个模块组成,每个模块分别对应着不同的WSDL文档,在ONVIF官网中能查看到这些模块,以及每个模块中的接口函数,这里列举几个模块:

  • DeviceMgmt(设备管理)
  • DeviceIO(设备IO服务)
  • Event(事件处理)
  • Analytics(视频分析)
  • AnalyticsDevice(分析设备)
  • Display(显示服务)
  • Imaging(图像配置)
  • Media(媒体配置)
  • PTZ(PTZ控制)
  • Receiver(接收端配置)
  • RemoteDiscovery(设备发现)
  • Recording(录像控制)
  • Replay(重放控制)
  • Search(记录搜索)

除了「RemoteDiscovery」模块之外,每个模块都有各自的「服务地址」,客户端要使用这些模块接口之前,必须先知道对应模块的「服务地址」。

https://www.onvif.org/onvif/ver20/util/operationIndex.html

05-28
### ONVIF协议概述及其实现 ONVIF(Open Network Video Interface Forum)是一个全球性的标准化组织,致力于为网络视频产品提供标准化的接口。通过定义统一的模型、接口、数据类型和交互模式,ONVIF确保了不同厂商生产的网络视频产品之间的互操作性[^2]。 #### 1. ONVIF协议的核心内容 ONVIF规范涵盖了从设备部署到实时流处理的整个生命周期,主要包括以下几个方面: - **设备发现**:允许客户端发现网络中的ONVIF兼容设备。 - **设备配置**:提供对设备参数的远程配置功能。 - **事件管理**:支持设备事件的订阅与通知机制。 - **PTZ控制**:实现对云台摄像机的精确控制。 - **视频分析**:提供智能视频分析功能的支持。 - **实时流媒体**:通过RTP/RTSP协议传输音视频流[^2]。 #### 2. Web Services在ONVIF中的应用 ONVIF协议中,设备管理和控制接口均以Web Services的形式提供。Web Services是一种基于HTTP和SOAP协议的技术,能够实现跨平台、跨语言的分布式通信。SOAP消息采用XML格式封装,确保了数据的可扩展性和语义清晰性,尽管其性能可能不如二进制协议高效[^5]。 #### 3. gSOAP在ONVIF实现中的角色 gSOAP是一个用于生成SOAP客户端和服务端代码的工具,广泛应用于ONVIF协议的实现中。通过gSOAP,开发者可以轻松地将WSDL定义转换为C/C++代码,从而简化了ONVIF服务的开发过程。gSOAP不仅支持SOAP协议,还提供了对HTTP传输层的抽象,使得开发者可以专注于业务逻辑的实现[^5]。 #### 4. 实现ONVIF协议的步骤 虽然不能使用步骤词汇,但以下是实现ONVIF协议时需要考虑的关键点: - 配置环境并安装必要的工具,例如gSOAP。 - 使用ONVIF提供的WSDL文件生成客户端或服务端代码。 - 实现核心功能模块,如设备发现、事件订阅、PTZ控制等。 - 测试与调试,确保与ONVIF兼容设备的互操作性。 以下是一个简单的gSOAP生成代码示例: ```c #include "soapH.h" #include "wsdd.nsmap" int main() { struct soap *soap = soap_new(); if (soap_call_wsdd__Probe(soap, NULL, NULL, NULL, NULL, NULL) == SOAP_OK) { printf("Device discovery successful\n"); } else { printf("Device discovery failed: %s\n", soap->faultstring); } soap_destroy(soap); soap_end(soap); soap_free(soap); return 0; } ``` #### 5. ONVIF协议的应用场景 ONVIF协议主要应用于网络视频监控领域,包括但不限于以下场景: - **NVR集成**:通过ONVIF协议,NVR可以与多种品牌和型号的网络摄像机无缝对接[^3]。 - **视频管理系统**:实现对多个摄像头的集中管理和控制。 - **智能家居**:为家庭用户提供便捷的远程监控功能。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值