ONVIF Ошибка InvalidArgVal: недопустимые аргументы PTZ и профилей
- Камера возвращает SOAP Fault с кодом
ter:InvalidArgValпри вызове команд управления или конфигурирования. - Отказ выполнения команд поворота PTZ (AbsoluteMove, ContinuousMove, RelativeMove).
- Ошибка при попытке изменения битрейта, разрешения или частоты кадров видеопотока через VMS.
- Сбой применения пресетов (GotoPreset) в поворотных камерах.
1. Причины возникновения InvalidArgVal
Код ter:InvalidArgVal (Subcode: Invalid Argument Value) сигнализирует о том, что клиент отправил синтаксически корректный XML-запрос, однако переданные параметры выходят за допустимые границы возможностей устройства. Основные сценарии:
- Координаты скорости или положения PTZ превышают диапазон
[-1.0 ... +1.0]; - Запрошен несуществующий или удаленный токен профиля (
ProfileToken); - Разрешение или кодек в
SetVideoEncoderConfigurationне поддерживается оптическим сенсором камеры; - Использование строкового идентификатора вместо числового (или наоборот).
2. Валидация пространств координат PTZ (Spaces Limits)
Перед отправкой команд перемещения запросите допустимые диапазоны (PTZ Configuration Options):
<soapenv:Body>
<ptz:GetConfigurationOptions xmlns:ptz="http://www.onvif.org/ver20/ptz/wsdl">
<ptz:ConfigurationToken>PTZConfigToken_1</ptz:ConfigurationToken>
</ptz:GetConfigurationOptions>
</soapenv:Body>В ответе проверяйте секцию Spaces. Стандартные нормализованные векторы скорости:
<ptz:ContinuousMove>
<ptz:ProfileToken>Profile_1</ptz:ProfileToken>
<ptz:Velocity>
<!-- Диапазон X (Pan): от -1.0 (влево) до +1.0 (вправо) -->
<tt:PanTilt x="0.5" y="0.0" space="http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace"/>
<!-- Диапазон Z (Zoom): от -1.0 (Zoom Out) до +1.0 (Zoom In) -->
<tt:Zoom x="0.0" space="http://www.onvif.org/ver10/tptz/ZoomSpaces/VelocityGenericSpace"/>
</ptz:Velocity>
</ptz:ContinuousMove>3. Проверка доступных ProfileToken
Никогда не хардкодьте строковые токены вроде "Profile_1" или "token_main". Сначала вызовите GetProfiles для получения актуального списка токенов устройства.
4. Проверка поддерживаемых конфигураций кодека
Перед изменением видеопотока вызовите GetVideoEncoderConfigurationOptions для получения списка валидных разрешений (ResolutionsAvailable) и интервала опорных кадров (GovLengthRange).
Частые вопросы (FAQ)
Почему вызов AbsoluteMove выдает InvalidArgVal, хотя координаты правильные?
Камера может не поддерживать абсолютное позиционирование (AbsoluteMove), требуя относительного (RelativeMove) или непрерывного (ContinuousMove) управления, либо в запросе указано неподдерживаемое координатное пространство (Space URI).
Что делать, если токен пресета вызывает ошибку в GotoPreset?
Вызовите метод GetPresets, чтобы получить актуальный список PresetToken, зарегистрированных в памяти поворотной платформы.
Может ли InvalidArgVal возникать из-за несоответствия типов данных XML?
Да, например передача дробного числа (0.5) в поле, требующее целочисленного значения integer (GovLength), вызовет отказ парсера с кодом InvalidArgVal.
Как проверить, поддерживает ли камера цифровой зум (Digital Zoom)?
Проверьте возвращаемые параметры в GetVideoAnalyticsConfigurationOptions и флаг ExtendedZoomSupported в ответе GetConfigurationOptions.