ONVIF Ошибка OutdatedConfiguration: рассинхронизация токенов конфигурации
- Ошибка SOAP
ter:OutdatedConfigurationпри попытке сохранения настроек видеопотока, зон детекции движения или параметров PTZ. - Сброс внесенных изменений при одновременной настройке камеры из веб-интерфейса и VMS/NVR.
- Сбой в процедуре согласования конфигураций кодека через
SetVideoEncoderConfiguration.
1. Механизм оптимистической блокировки в ONVIF
Стандарт ONVIF использует версионирование конфигураций для защиты от одновременной несогласованной перезаписи параметров несколькими клиентами (Optimistic Concurrency Control). Каждая структура настроек (VideoEncoder, AudioSource, PTZ) содержит внутренний маркер версии или привязана к динамическому состоянию профиля.
Ошибка ter:OutdatedConfiguration возвращается, если между моментом получения настроек клиентом (GetVideoEncoderConfiguration) и отправкой команды сохранения (SetVideoEncoderConfiguration) конфигурация на камере была изменена другим процессом.
2. Пошаговый алгоритм разрешения конфликта
- Сброс локального кэша клиента: Принудительно очистите кэшированные объекты конфигурации в VMS;
- Повторное чтение актуальных параметров: Вызовите метод
GetVideoEncoderConfigurationилиGetProfileперед самой записью; - Сравнение параметров: Внесите только необходимые точечные изменения в полученную свежую структуру;
- Повторная отправка команды: Отправьте
SetVideoEncoderConfigurationс актуальным маркером состояния (ForcePersistence = true).
3. Пример правильного цикла обновления в коде (Python/Zeep)
# 1. Получаем свежую конфигурацию с камеры
video_encoder_cfg = media_service.GetVideoEncoderConfiguration({'ConfigurationToken': 'VideoEncoderToken_1'})
# 2. Модифицируем конкретное поле (например, битрейт)
video_encoder_cfg.RateControl.BitrateLimit = 4096
# 3. Сохраняем с флагом ForcePersistence
media_service.SetVideoEncoderConfiguration({
'Configuration': video_encoder_cfg,
'ForcePersistence': True
})4. Устранение сторонних источников параллельной записи
Если ошибка возникает циклически, найдите и отключите сторонние службы, перезаписывающие параметры:
- Встроенная в NVR функция автосинхронизации параметров потока камеры;
- Скрипты поддержания качества изображения (Cloud/P2P агенты);
- Второй запущенный инстанс VMS платформы.
Частые вопросы (FAQ)
Что означает флаг ForcePersistence в методах SetConfiguration?
Флаг ForcePersistence указывает камере немедленно записать полученные настройки в энергонезависимую память Flash/EEPROM, чтобы они сохранились после перезагрузки.
Почему ошибка возникает при настройке одного и того же профиля с двух рабочих мест?
Если первый оператор сохранил изменения на секунду раньше, версия конфигурации на камере инкрементировалась, и запрос второго оператора отклоняется как основанный на устаревших данных (Outdated).
Как избежать ошибки в многопоточных сервисах мониторинга?
Используйте мьютексы (блокировки) на уровне приложения для каждого устройства или выполняйте операцию по паттерну Retry-on-Conflict (повторный Get -> модификация -> Set).
Может ли OutdatedConfiguration возникать при изменении параметров PTZ?
Да, если во время вызова SetPTZConfiguration поворотная камера выполняет автокалибровку или переключение пресета по расписанию.