原文:http://www.cnblogs.com/big-devil/p/7625752.html

最近在做onvif协议的相关工作,看到一篇介绍onvif协议很好的文章,遂转载过来,以作记录

在查阅资料的时候,又找到某个博主总结的onvif专栏,也很不错,可以系统的学习下,专栏地址,他包含如下内容

1 什么是ONVIF协议

2008年5月,由安讯士(AXIS)联合博世(BOSCH)及索尼(SONY)公司三方宣布携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛)并以公开、开放的原则共同制定开放性行业标准。ONVIF标准将为网络视频设备之间的信息交换定义通用协议,包括装置搜寻、实时视频、音频、元数据和控制信息等。

ONVIF规范中设备管理控制部分所定义的接口均以Web Services的形式提供,设备作为服务提供者为服务端。ONVIF规范涵盖了完全的基于XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行 。

2 web service

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

Web Service是基于XML和HTTPS的一种服务,其通信协议主要基于SOAP。服务端、客户端以传递符合XML的SOAP消息实现服务的请求与回应。

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

3 ONVIF规范

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

A:Web Service能为视频监控什么

  • 设备的无关性,任何一个设备接入系统,不会对其他系统造成影响。
  • 设备的独立性,每一个设备只负责对接收到的请求做出反馈,甚至不需要知晓控制端的存在。
  • 管理的集中性,所有的控制由客户端来发起。

B:ONVIF规范能为视频监控带来什么

  • 抽象了功能的接口。统一了对设备的配置以及操作的方式。
  • 控制端关心的不是设备的型号,而是设备所提供的Web Service。
  • 规范了视频系统中Web Service范围之外的行为。
  • ONVIF提供了各个模块的WSDL,拥有效率非常高的开发方式。

C:ONVIF规范的内容

  • 设备发现
  • 设备管理
  • 设备输入输出服务
  • 图像配置
  • 媒体配置
  • 实时流媒体
  • 接收端配置
  • 显示服务
  • 事件处理
  • PTZ控制
  • 其他

4 WSDL

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

<span data-wiz-span="data-wiz-span" style="font-size: 1rem;"><?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions name="HelloWorld"targetNamespace="http://server.cxf.webservice.web.apps.lucl.com/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:tns="http://server.cxf.webservice.web.apps.lucl.com/"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:ns1="http://schemas.xmlsoap.org/soap/http"><!-- 定义数据类型 --><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:tns="http://server.cxf.webservice.web.apps.lucl.com/"elementFormDefault="unqualified"targetNamespace="http://server.cxf.webservice.web.apps.lucl.com/"version="1.0"><xs:element name="sayHi" type="tns:sayHi" /><xs:element name="sayHiResponse" type="tns:sayHiResponse" /><xs:complexType name="sayHi"><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:string" /></xs:sequence></xs:complexType><xs:complexType name="sayHiResponse"><xs:sequence><xs:element minOccurs="0" name="return" type="xs:string" /></xs:sequence></xs:complexType></xs:schema></wsdl:types><!-- 定义消息分组 --><wsdl:message name="sayHiResponse"><wsdl:part element="tns:sayHiResponse" name="parameters" /></wsdl:message><wsdl:message name="sayHi"><wsdl:part element="tns:sayHi" name="parameters" /></wsdl:message><!-- 定义port type --><wsdl:portType name="HelloWorldPortType"><wsdl:operation name="sayHi"><wsdl:input message="tns:sayHi" name="sayHi" /><wsdl:output message="tns:sayHiResponse" name="sayHiResponse" /><!-- 指定当 Web 服务设法响应客户机的请求时所发生的任何消息级异常 --><!--<wsdl:fault name="" message=""></wsdl:fault> --></wsdl:operation></wsdl:portType><!-- binding操作到特定协议,即关联portType到协议,这里为SOAP --><!-- W3C 推荐了三个 Web 服务的绑定:HTTP 上的 SOAP(SOAP over HTTP)HTTP GET/POSTSOAP/MIME--><wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorldPortType"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operation name="sayHi"><soap:operation soapAction="" style="document" /><wsdl:input name="sayHi"><soap:body use="literal" /></wsdl:input><wsdl:output name="sayHiResponse"><soap:body use="literal" /></wsdl:output><!-- 应用portType处的fault --><!--<wsdl:fault name=""><soap:fault name="" use="literal"/></wsdl:fault> --></wsdl:operation></wsdl:binding><!--描述binding的连接信息,根据绑定所实现的 portType 来处理请求。对于 HTTP 上的 SOAP,这就是指向那个进程的 URL。--><wsdl:service name="HelloWorld"><wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorldPort"><soap:address location="http://localhost:9000/helloWorld" /></wsdl:port></wsdl:service>
</wsdl:definitions></span>

5 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的开发过程。

基于ONVIF协议的摄像头开发总结相关推荐

  1. SfxMCP基于onvif协议H5无插件直播方案中onvif设备的接入方法 - sfxlab

    SfxMCP基于onvif协议H5无插件直播方案中onvif设备的接入方法 - sfxlab SFX流媒体解决方案基于安防行业推出了以媒体汇聚平台(SfxMCP)为主,以媒体分发平台(SfxMDP)和 ...

  2. java xmpp即时通讯_基于XMPP协议即时通讯工具开发总结

    一.概要 转眼毕业了,毕业设计的课题是"基于XMPP协议的通讯工具",开发平台式android,实现了基本的离线消息,文字聊天,表情聊天,文件传输,语音聊天的功能. 本文主要介绍开 ...

  3. 基于ONVIF协议的(IPC)客户端程序开发-10 设备校时

    原文链接:http://blog.csdn.net/benkaoya/article/details/72486511 1 编码流程 ONVIF标准中,有 GetSystemDateAndTime和S ...

  4. 支持OnVif协议的摄像头直播推流php

    视频转流中用到的东西 gitee地址 nginx nginx 已经支持rtmp转流 ffmpeg ffmpeg php对应的引用库 ponvif php的控制器方法 Onvif.php hls播放页面 ...

  5. Android 外接基于UVC协议的摄像头并实现预览

    先来一段从网上找到的理论知识,对UVC协议有初步的印象 UVC协议:USB Video Class,USB视频类,是一种为USB视频捕获设备定义的协议标准. Android 平台支持使用即插即用的 U ...

  6. 基于soap协议的webservice开发

    1.利用cxf进行webservice开发,因此需要去官网下载cxf的jar包. 2.eclispe建立工程,引入jar包. 3.编写对外发布的接口: 4.编写实现类: 5.编写对外发布的类: 6.启 ...

  7. Qt基于文本协议的网络应用开发

    文章目录 1 文本协议的设计与实现 1.1 文本协议设计介绍 1.2 文本协议设计示例 2 从字节流装配文本协议对象 3 文本协议中的中文处理 4 文本协议的网络应用 1 文本协议的设计与实现 1.1 ...

  8. 基于MQTT协议进行应用开发

    来自:http://www.cnblogs.com/secondtononewe/p/6073089.html 官方协议有句如下的话来形容MQTT的设计思想: "It is designed ...

  9. ONVIF协议开发之网络摄像头云台控制(C版)

    在之前的文章中(<python-onvif实现客户端控制相机云台>),介绍过用python实现基于onvif协议的相机云台控制,考虑到嵌入式端的执行效率问题,还是需要实现C/C++版本的接 ...

最新文章

  1. Java进程占用内存超高分析
  2. Web 开发学习笔记(1) --- 搭建你的第一个 Web Server
  3. java代码,继承。。。主要是传值,赋值。
  4. unity游戏中提示信息如何实现_Unity编辑器操作面试题集锦(上)
  5. python基础语法实验要求_Python基础语法-关于条件
  6. 话里话外:企业ERP实施的前前后后(二)
  7. 美团点评2020年测试工程师笔试题
  8. 协同OA融入ERP 高端应用助企业升级转型
  9. 动易html编辑器,动易后台编辑器在IE8下无效的解决方法
  10. python批量修改文件夹名
  11. 前缀树python实现
  12. 云服务器1M带宽表示什么意思,购买服务器时如何选择服务器带宽?
  13. 【C#】基础篇(2) C#实现串口助手,C#扫描串口
  14. wifi 验证加密 总结
  15. ESC/POS 打印机指令
  16. [普及练习场] 生活大爆炸版石头剪刀布
  17. 如何用python给自己的孩子取一个名字?
  18. 软件工程-数据流图+ER图绘制听课笔记
  19. 普通猫和光纤猫指示灯说明
  20. 二十三、动网格Smoothing Diffusion方法及实例

热门文章

  1. VLDB创始人:为什么和其他相比,Greenplum是最好的?
  2. maskrcnn-benchmask训练自己的数据集(voc格式)
  3. Sitecore 8.2 工作流程
  4. golang gin binding.JSON undefined
  5. c++和python的结合——boost库的使用
  6. android 底座充电压力插拔,有概率没有提示音
  7. 计算机视觉技术公司列表
  8. 在终端画画、炒股、玩游戏
  9. Random伪随机数
  10. 论文阅读笔记——Backdoor Defense with Machine Unlearning