ONVIF Ошибка PTZ: недействительный токен контроллера в AbsoluteMove/ContinuousMove
- SOAP-запросы
AbsoluteMove,ContinuousMove,RelativeMoveилиStopвозвращают ошибкуter:InvalidTokenилиNo PTZ Node/Config bound to Profile. - Джойстик или программные кнопки поворота в VMS не реагируют на команды оператора.
- Камера успешно транслирует видео, но не выполняет команды панорамирования, наклона и приближения.
1. Архитектура связывания PTZ в ONVIF
В спецификации ONVIF PTZ Service команды управления не отправляются напрямую к камере. Они адресуются конкретному медиапрофилю через параметр ProfileToken. Для успешного управления профиль обязан иметь связанный PTZConfigurationToken, который, в свою очередь, привязан к физическому узлу PTZNodeToken.
Если клиент передает токен видеопрофиля, в котором отсутствует блок <tt:PTZConfiguration>, камера возвращает отказ.
2. Проверка доступных PTZ Nodes через GetNodes
Запросите список физических поворотных узлов устройства:
<soapenv:Body>
<ptz:GetNodes xmlns:ptz="http://www.onvif.org/ver20/ptz/wsdl"/>
</soapenv:Body>В ответе убедитесь, что возвращается хотя бы один PTZNode с поддержкой нужных пространств перемещения (SupportedPTZSpaces).
3. Проверка привязки PTZ к профилю через GetProfiles
Вызовите GetProfiles сервиса Media и убедитесь, что в структуре профиля присутствует заполненный тег PTZConfiguration:
<tt:Profile token="Profile_1" fixed="true">
<tt:Name>MainProfile</tt:Name>
<tt:VideoSourceConfiguration token="VSC_1"/>
<tt:VideoEncoderConfiguration token="VEC_1"/>
<!-- Этот блок ОБЯЗАН присутствовать: -->
<tt:PTZConfiguration token="PTZ_Config_1">
<tt:Name>PTZ_Main</tt:Name>
<tt:NodeToken>PTZNode_1</tt:NodeToken>
</tt:PTZConfiguration>
</tt:Profile>4. Принудительная привязка PTZ-конфигурации к профилю
Если блок отсутствует, выполните связывание через метод AddPTZConfiguration:
<soapenv:Body>
<trt:AddPTZConfiguration xmlns:trt="http://www.onvif.org/ver10/media/wsdl">
<trt:ProfileToken>Profile_1</trt:ProfileToken>
<trt:ConfigurationToken>PTZ_Config_1</trt:ConfigurationToken>
</trt:AddPTZConfiguration>
</soapenv:Body> Частые вопросы (FAQ)
Почему при создании нового профиля в нем не работает PTZ?
Метод CreateProfile создает пустой контейнер. Вы обязаны вручную вызвать AddVideoSourceConfiguration, AddVideoEncoderConfiguration и AddPTZConfiguration для активации функционала.
Что делать, если камера возвращает ошибку 'PTZ is not supported' на поворотном объективе?
Проверьте настройки протокола телеметрии в веб-интерфейсе камеры (вкладка PTZ -> Protocol). Убедитесь, что выбран внутренний протокол управления, а не внешний RS-485 Pelco-D, если используется встроенный привод.
Чем отличается ContinuousMove от AbsoluteMove?
ContinuousMove запускает непрерывное движение камеры с заданной скоростью (требует последующей команды Stop). AbsoluteMove отправляет камеру в точные координаты (X, Y, Zoom).
Как остановить зависшее движение камеры?
Отправьте SOAP-запрос Stop с параметрами PanTilt=true и Zoom=true для целевого ProfileToken.