【发布时间】:2018-01-06 07:08:43
【问题描述】:
我的目标是为 onvif ptz 摄像机编写一个客户端,以便我可以查看数据(平移/倾斜/摄像机/镜头值)、发送控制命令和查看视频。我在使用带有 Axis 相机的 C++/gsoap 方面取得了一定的成功。然后我用另一家公司的相机试了一下,还是不行。我认为问题是因为其他相机使用了不同版本的“某物”——我不确定它是不同的架构、不同的配置文件版本、不同版本的 ONVIF 还是不同版本的肥皂。
我想创建一个支持任何 ONVIF 摄像头的客户端,或者至少支持绝大多数摄像头。我不想说“抱歉,您的相机已经使用了 1 年,不再支持该协议”。
我使用的是 onvifcpplib,它似乎已经被放弃了一段时间,现在它的 gitbhub 项目转发到了 rapidonvif,看起来完全不同。
近两天来,我一直在研究 ONVIF,并试图弄清楚这将需要什么。如果我去这里:https://www.onvif.org/profiles/specifications/specification-history/ 我看到不少于 18 个不同的规格版本!
这个版本似乎会影响 wsdl 文件的版本,所以例如我可以在这里看到媒体 wsdl 的 1.0 版本:http://www.onvif.org/ver10/media/wsdl/media.wsdl ...但这里也有相同文件的 2.0 版本:@987654323 @.
而且我认为它们不向后兼容。但我找不到一个 2.6 - 所以: http://www.onvif.org/ver26/media/wsdl/media.wsdl 不存在。
这只是我需要使用 gsoap 的 15 个 wsdl 文件之一。
我真的很困惑该怎么做。是否有 ONVIF 专家可以帮助我解决其中一些问题?
问题 1) 是否有一个主列表或其他内容告诉我作为客户端编写者我必须支持哪些 wsdl 版本以及哪些不向后兼容?用所有 15 个 wsdl 文件尝试所有 18 个版本的所有可能排列将永远花费!其中一些可能向后兼容,而另一些则不能 - 我怎么知道哪些是哪些?
问题 2) 除了网络接口规范之外,还有不同的配置文件版本。其中一些也不向后兼容吗?
问题 3) 除了网络接口规范和配置文件版本之外,还有多个 SOAP 版本 - 1.1 和 1.2。我需要担心某些相机使用 1.1,还是 ONVIF 总是使用 1.2?
问题 4) 我应该如何使用 gsoap 编译多个版本?例如,如果我在 ptz wsdl 的 1.0 和 2.0 版本中使用 wsdl2h,然后使用 soapcpp2,然后尝试将两者都包含到同一个项目中,则会出现冲突。我不想对用户说...对不起,但您必须研究并确定您的相机是否使用 ONVIF 版本,因此您必须使用其他可执行文件或插件。
问题 5) 即使我能够在同一个应用程序中编译多个版本,我如何知道在连接到特定相机时使用哪个版本?我是否会询问相机并说“你是哪个版本?好的,你正在使用这个特定的版本和配置文件,所以我将使用这组命令”?
问题 6) 有这么多变体和版本,到底如何才能编写一个支持大多数相机的 ONVIF 客户端,而无需花费数月至数年的时间进行开发?是否有任何第三方库或 sdk 抽象了所有这些版本控制的巫术?
感谢您提供的任何帮助!
【问题讨论】:
-
每个问题一个问题,请。