ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。
ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。ONVIF规范涵盖了完全的XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行 。
由于Web Services采用WSDL+XML模式,WSDL是服务端用来向客户端描述自己实现哪些请求、发送请求时需要带上哪些参数xml组织格式 SOAP是客户端向服务端发送请求时的参数的xml组织格式,使ONVIF规范的后续扩展不会遇到太多的麻烦。XML极强的扩展性与SOAP协议开发的便捷性将吸引到更多的人来关注和使用ONVIF规范。
拿IPC摄像头来说,IPC是Web Services服务端,其提供的WEB服务接口需符合ONVIF协议规范(这些接口在ONVIF规定的WSDL文档中),我们开发的客户端通过这些ONVIF规范接口跟IPC通讯,比如:
1.获取IPC的基本信息(厂家信息、版本信息等)
2.修改IPC的系统日期、时间
3.修改IPC的网络配置(IP、子网掩码等)
4.获取/修改IPC摄像头的各种参数(视频分辨率、码率、帧率、OSD,云台控制等)
由于SOAP协议不适合传输音视频流,ONVIF规范中的传输音视频流采用的是已经很成熟的RTP/RTSP多媒体传输协议。简单粗暴的理解:IPC的各种参数获取/配置都是通过ONVIF协议实现,而音视频流多媒体传输采用的是RTP/RTSP协议实现。在安防、监控系统急速发展的今天,效率和质量的领先所带来的价值不言而喻。ONVIF协议提供了这样的潜质。
Web Service是基于网络的、分布式的模块化组件,执行特定的任务。Web Service 主要利用 HTTP 和 SOAP 协议使数据在 Web 上传输。Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象。
客户端根据 WSDL 描述文档,会生成一个 SOAP 请求消息,该请求会被嵌入在一个HTTP POST请求中,发送到 Web Services 所在的Web 服务器。Web Services 请求处理器解析收到的 SOAP 请求,调用相应的 Web Services。然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP应答的方式把信息送回到客户端。
WSDL是Web services 描述语言(Web Service Description Language)的缩写。是一个用来描述Web服务和说明如何与Web服务通信的XML语言,为用户提供详细的接口说明书。
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规范向视频监控引入了Web Service的概念。设备的实际功能均被抽象为了Web Service的服务,视频监控系统的控制单元以客户端的身份出现,通过Web请求的形式完成控制操作。
设备的无关性,任何一个设备接入系统,不会对其他系统造成影响。
设备的独立性,每一个设备只负责对接收到的请求做出反馈,甚至不需要知晓控制端的存在。
管理的集中性,所有的控制由客户端来发起。
抽象了功能的接口。统一了对设备的配置以及操作的方式。 控制端关心的不是设备的型号,而是设备所提供的Web Service 规范了视频系统中Web Service范围之外的行为。除此之外ONVIF提供了各个模块的WSDL,拥有效率非常高的开发方式。
设备发现
设备管理
设备输入输出服务
图像配置
媒体配置
实时流媒体
接收端配置
显示服务
事件处理
PTZ控制
其他
1.、获取onvif官网上的onvif模块的wsdl文件
DeviceMgmt(设备管理)
https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl
DeviceIO(设备IO服务)
http://www.onvif.org/onvif/ver10/deviceio.wsdl
Event(事件处理)
http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl
Analytics(视频分析)
http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl
AnalyticsDevice(分析设备)
http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl
Display(显示服务)
http://www.onvif.org/onvif/ver10/display.wsdl
Imaging(图像配置)
http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl
Media(媒体配置)
https://www.onvif.org/ver10/media/wsdl/media.wsdl
PTZ(PTZ控制)
http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
Receiver(接收端配置)
http://www.onvif.org/onvif/ver10/receiver.wsdl
RemoteDiscovery(设备发现)
https://www.onvif.org/ver10/networ/wsdl/remotediscovery.wsdl
Recording(录像控制)
http://www.onvif.org/onvif/ver10/recording.wsdl
Replay(重放控制)
http://www.onvif.org/onvif/ver10/replay.wsdl
Search(记录搜索)
http://www.onvif.org/onvif/ver10/search.wsdl
对应各模块文档:
https://www.onvif.org/onvif/ver20/util/operationIndex.html
2.、通过gSOAP编译为c/c++文件。
下载gsoap: https://sourceforge.net/projects/gsoap2
安装OpenSSL(ubantu上编译需要指明连接库的路径):/index.html
3.、业务逻辑开发,音视频流可以采用ffmpeg开发
4.、编写main函数调用接口,修改参数等,发布onvif版本