ONVIF
onvif(Open Network Video Interface Forum,开放型网络视频接口论坛)协议.
onvif协议涵盖了设备发现、设备配置、事件、PTZ控制、视频分析和实时流媒体直播功能,以及搜索,回放和录像录音管理功能。
先去看许振坪大佬的文章:
ONVIF协议网络摄像机(IPC)客户端程序开发(1):专栏开篇
如果你也是看完第六章,继续往下看也不知其意的话,我这篇文章应该会对你有所帮助。
说明 | |
---|---|
Profile A | Profile A 用于电子准入控制系统,用于高级门禁控制配置 Profile A 设备能进行信息检索(状态、事件)、实体配置如准入规则、证书、schedules(计划)等配置。 Profile A 客户端则可以通过网络使用Profile A 设备的上述功能。 |
Profile C | Profile C 用于电子准入控制系统,用于物理门禁控制配置。 Profile C 标准的设备和客户端适合于site information(站点信息), door access control(门禁控制), and event and alarm management(事件、报警管理)场景 |
Profile D | Profile D是一款专门针对访问控制外设接口。 Profile D开发的目的是希望用ONVIF标准为外围设备,例如锁、资格/生物识别器、密码键盘、车牌识别摄像头、电话门禁、传感器和显示器等,提供互操作性。 Profile D 对之前发布的Profile A和Profile C的功能进行了补充,实现了IP电子访问控制系统内部的标准化通讯。 |
Profile G | Profile G 同样也是为基于IP的视频系统设计,用于录制和存储。 Profile G 设备可以保存视频录像文件,Profile G 客户端可以通过网络配置、请求、控制 Profile G 设备录像数据的功能。 Profile G 还包括接收音频和metadata流的规范。 |
Profile Q | Profile Q 提供了设备发现、基本配置功能的标准。用于简易安装与高级安防功能 Profile Q 设备(network camera, network switch, network monitor)能够被Profile Q 客户端通过网络快速发现、配置、控制。 Profile Q 标准支持TLS交互方式。 |
Profile S | Profile S 主要为基于IP的视频系统设计。 Profile S 设备(如IPC、视频编码器),一般用于传输视频流给 Profile S 客户端(如IVMS)。 Profile S 客户端具有通过网络配置、请求、控制 Profile S 设备视频流的功能。 Profile S 框架囊括 PTZ control(云台控制)、audio in(音频输入)、多播、转播的规范。 |
Profile T | Profile T 同样也是为基于IP的视频系统设计。 Profile T 设备支持H.264 and H.265 编码格式,成像设置, 报警事件,如运动和篡改检测。 Profile T设备的强制规定包括onscreen display and metadata streaming(屏幕显示和元数据流)。 Profile T客户端的强制规定包括PTZ控制。 Profile T 还包括HTTPS streaming, PTZ configuration, motion region configuration, digital inputs and relay outputs, and bidirectional audio for conformant devices and clients规范。 注: 官方强调,Profile T规范不是对Profile S规范的取代,而是针对不同应用领域的扩展,当然两个标准也可以合并使用。 |
Onvif官网接口:https://www.onvif.org/profiles/specifications/
我们写的系统都是需要围绕 Profile 来进行编程的,因为一个设备至少要实现一个Profile的功能。每一个Profile都有一些必须实现的功能,所以呢他就有了一个 Requirement Levels
来标记我们必须要实现的一些功能,Requirement Levels在每一个Profile Specification文档中都有定义。
- Mandatory(M):ONVIF设备或ONVIF客户端应实现的功能。
- Conditional(C):如果支持该功能,则应由ONVIF设备或ONVIF客户端实现的函数。
- Optional(O):可以由ONVIF设备或ONVIF客户端实现的功能。
看以下Profile A Specification中截的图:
由此可见,我们让我们的系统支持Profile A那么,就必须实现MANDATORY标记的模块中的Requirment为M的函数,Device是服务端,Client是客户端。
我们先看一下下面的关系图
文中原图链接:https://wenku.baidu.com/view/a2ba36327fd5360cba1adb5a.html
看完这些之后呢,相信你一定会有所收获,建议去下载《ONVIF2.0协议珍藏版》看,里面全中文。
ONVIF常用接口:https://www.onvif.org/onvif/ver20/util/operationIndex.html
windows 系统使用gSOAP生成onvif C++框架
WINDOWS下编译支持SSL/TLS的WSDL2H
OpenSSL下载地址:http://slproweb.com/products/Win32OpenSSL.html
OpenSSL选1.1.1的,3.0的版本编译无法通过。
WINDOWS下编译支持SSL/TLS的WSDL2H:https://www.freesion.com/article/82981316621/
gSOAP生成onvif C++框架
https://blog.csdn.net/weixin_44517656/article/details/115120199
使用
VS中使用OpenSSL,添加 C/C++ 预处理器
WITH_DOM
WITH_OPENSSL
记得引入OpenSSL头和库的目录,链接OpenSSL。这样就可以参考许振坪大佬的文章去敲代码啦。