使用gSOAP时ONVIF版本与ver10/ver20 WSDL的澄清问询
ONVIF版本机制及版本识别答疑
你用gSOAP 2.8.140集成了ONVIF服务,采用ONVIF specs仓库中ver10、ver20目录的WSDL文件,以下针对你提出的疑问逐一解答:
1. ONVIF版本22.12代表什么?
ONVIF的YY.MM格式版本(如22.12)是核心规范的发布版本,标识2022年12月发布的全协议栈规范合集。这类版本是ONVIF组织对整个协议(含所有服务模块、数据模型、合规要求)的统一更新标记,每半年左右发布一次,涵盖功能迭代、Bug修复及合规标准升级。
2. 它与ver10/ver20的WSDL结构有何关联?
ver10、ver20是单个服务模块的版本号,比如Device Service的ver10、Media Service的ver20。ONVIF将不同功能拆分为独立服务模块,每个模块有自身的版本迭代逻辑,verX0中的X代表大版本号(1对应第一版,2对应第二版)。
而YY.MM核心版本是将各服务模块的指定版本打包而成的规范集合。例如22.12版本的规范中,会明确每个服务模块对应的推荐版本(如Device用ver20、Media用ver30)——ver10/ver20是单个服务的版本,YY.MM是全局的规范合集版本。
3. 如何根据所用WSDL确定设备支持的ONVIF版本(或合规等级)?
- 匹配服务模块版本:先明确你所用WSDL对应的服务模块版本,比如ver10是早期服务版本,ver20是较新的模块版本。
- 对照核心版本映射:每个
YY.MM核心版本都会列出包含的各服务模块版本,你可以通过这个映射关系,找到与你所用WSDL版本最匹配的核心版本(比如Device ver20+Media ver20,对应ONVIF 20.10或更早的核心版本)。 - 判断合规等级:ONVIF的Profile S(视频监控)、Profile T(高级视频)、Profile G(录像存储)等合规认证,会绑定特定核心版本和服务模块版本。比如Profile S可能要求Device ver20、Media ver20,对应核心版本20.10及以上,你可通过实现的服务模块版本对照Profile要求来判断。
- 设备接口验证:设备的ONVIF服务中,调用
GetDeviceInformation接口可获取设备声明的ONVIF版本,前提是设备端正确实现该接口。
4. ONVIF版本是否与WSDL版本、S/T/G等配置文件相关,或是其他独立概念?
三者紧密关联,并非独立概念:
- WSDL版本:即ver10/ver20这类单个服务的版本,是
YY.MM核心版本的组成部分,每个核心版本对应一组特定版本的服务WSDL。 - Profile S/T/G:这些是ONVIF的合规认证Profile,每个Profile基于某个
YY.MM核心版本制定,要求设备必须实现特定服务模块的指定版本,同时满足功能、兼容性要求(比如Profile T需支持高级视频分析,对应的核心版本和服务模块版本高于Profile S)。 YY.MM版本是全局规范基准,WSDL版本是具体服务的实现版本,Profile是基于核心版本的合规打包要求,三者呈层级包含关系。
当前实现的版本识别方法
- 整理你所用所有WSDL对应的服务模块版本(如Device ver10、Media ver20)。
- 对照ONVIF核心版本与服务模块的映射关系,找到最匹配的
YY.MM核心版本。 - 若需确认合规等级,检查实现的服务模块是否满足某个Profile的版本及功能要求。
- 测试阶段可调用设备的
GetCapabilities和GetDeviceInformation接口,获取设备实际返回的版本信息,与你的实现做比对。
内容的提问来源于stack exchange,提问作者ajay.rathor
相关产品推荐
相关产品推荐

