Понимание спецификаций и версий ONVIF

Моя цель — написать клиент для камер onvif PTZ, чтобы я мог просматривать данные (значения панорамирования / наклона / камеры / объектива), отправлять команды управления и просматривать видео. Я был несколько успешным, используя C ++ / gsoap с камерой Axis. Тогда я попробовал это с камерой от другой компании, и это не работало. Я считаю, что проблема в том, что другая камера использует другую версию «чего-то» — я не уверен, что это другая схема, другая версия профиля, другая версия ONVIF или другая версия мыла.

Я хочу сделать клиент, который поддерживает любую камеру ONVIF, или, по крайней мере, подавляющее большинство из них. Я не хочу говорить: «Извините, вашей камере 1 год, и этот протокол больше не поддерживается».

Я использовал onvifcpplib, который, похоже, был заброшен на некоторое время, и теперь его проект gitbhub переходит к rapidonvif, который выглядит совершенно иначе.

Уже почти два дня я изучаю ONVIF и пытаюсь понять, что из этого выйдет. Если я пойду сюда: https://www.onvif.org/profiles/specifications/specification-history/ Я вижу не менее 18 различных версий спецификаций!

Эта версия, похоже, влияет на версии файлов wsdl, поэтому, например, я вижу, что здесь есть версия 1.0 для мультимедиа wsdl: http://www.onvif.org/ver10/media/wsdl/media.wsdl … но здесь есть версия 2.0 того же файла: http://www.onvif.org/ver20/media/wsdl/media.wsdl .

И я не думаю, что они обратно совместимы. Но я не могу найти один для 2.6 — так:
http://www.onvif.org/ver26/media/wsdl/media.wsdl не существует.

И это только один из 15 wsdl-файлов, с которыми мне нужно использовать gsoap.

Я действительно запутался в том, что делать. Есть ли специалист по ONVIF, который может помочь мне с некоторыми из этих вопросов?

Вопрос 1) Есть ли основной список или что-то, что говорит мне как клиентскому клиенту, какие версии wsdl я должен поддерживать, а какие нет обратной совместимости? Попытка каждой возможной перестановки всех 18 версий со всеми 15 файлами wsdl заняла бы вечно! Некоторые из них могут быть обратно совместимы, а другие нет — откуда мне знать, что есть что?

Вопрос 2) Помимо спецификаций сетевого интерфейса, существуют разные версии профиля. Некоторые из них также не совместимы с предыдущими версиями?

Вопрос 3) Помимо спецификаций сетевых интерфейсов И версий профиля, существует несколько версий SOAP — 1.1 и 1.2. Нужно ли беспокоиться о некоторых камерах, использующих 1.1, или ONVIF всегда использует 1.2?

Вопрос 4) Как я должен скомпилировать несколько версий с помощью gsoap? Если я использую wsdl2h, а затем soapcpp2 для версии 1.0 и 2.0 ptz wsdl, например, а затем пытаюсь включить оба в один и тот же проект, то возникнут конфликты. Я не хочу говорить пользователям … извините, но вам придется исследовать и выяснить, использует ли ваша камера версию ONVIF, и вам придется использовать этот другой исполняемый файл или плагин.

Вопрос 5) Даже если мне удалось получить несколько версий для компиляции в одном приложении, как я узнаю, какую версию использовать при подключении к определенной камере? Запрашиваю ли я камеру и спрашиваю: «Какая у вас версия? Хорошо, вы используете именно эту версию и профиль, поэтому я буду использовать этот набор команд»?

Вопрос 6) С таким количеством вариаций и версий можно ожидать, что вы напишите клиент ONVIF, который поддерживает большинство камер, не тратя месяцы на разработку? Существует ли какая-либо сторонняя библиотека или SDK, которая абстрагирует все эти версии voodoo?

Спасибо за любую помощь, вы можете предоставить!

3

Решение

1 + 2) Клиент может поддерживать любой набор документов wsdl, который он выберет, потому что делаются только дополнения и не вносятся изменения в типы и операции. Если я правильно помню, это указано в Базовом документе.

3) Насколько я знаю, используется только SOAP 1.2.

4) У меня нет хорошего ответа, я написал свой собственный генератор кода C ++, который занимался этими проблемами.

5) GetServices возвращает версию службы, предоставляемой устройством.

6) Это не так уж плохо … Я думаю, что большинство функций могут быть определены так или иначе. Существует определенная путаница до версии 2.0. Основные проблемы, которые я обнаружил, касаются реализаций устройств, не соответствующих спецификации.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]