Перейти к содержанию

Часто возникающие проблемы с видеопотоками и их решение#

В данном разделе описаны распространенные сценарии сбоев видеопотоков и методы их устранения.

Перед тем как приступить к диагностике сложных сценариев, рекомендуется выполнить базовую проверку:

  • проверьте доступность и актуальность учетных данных;

  • убедитесь, что URL-адрес камеры корректен и доступен из сети, где расположен сервер;

  • проверьте, не достигнуто ли ограничение на максимальное количество подключений к самой камере.

Если базовые проверки не выявили проблем, но потоки продолжают отключаться, изучите следующие типичные сценарии.

1․ Проблема: Поток создается, но сразу переходит в статус failure с ошибкой инициализации кодека

Признаки проблемы:

  • в секции потока video_info все параметры имеют нулевые или значения по умолчанию, указывающие на отсутствие данных;

  • в логах FaceStream есть ошибки типа: initCodec - avcodec_open2 failed! Generic error in an external library, openVideo - initCodec failed!, Stream: ... got error: Couldn't find or init appropriate codec for stream source

Возможная причина:

Перегрузка аппаратного декодера видеокарты (NVDEC). Когда его использование достигает ~99%, он перестает инициализировать новые потоки и начинает возвращать ошибки.

Решение проблемы:

  • необходимо включить смешанное декодирование. Для этого установите параметр mixed_decode в настройках FaceStream. Данный параметр определяет процент потоков, декодируемых на CPU, и может принимать значения от 0 до 100%. Оптимальное значение подбирается экспериментально в зависимости от производительности процессора и нагрузки на него. Рекомендуемые начальные значения: от 5 до 10 с последующим увеличением с шагом 5 до тех пор, пока процессор сохраняет способность держать нагрузку.

Важно! Изменение параметра требует перезагрузки сервиса FaceStream для применения конфигурации.

  • проверить балансировку нагрузки. Убедитесь, что потоки распределены между всеми доступными GPU равномерно. Самую большую нагрузку создаёт детекция тел, затем следует совместный детектор и детекция лиц. Необходимо учитывать это при распределении.

2․ Проблема: Поток функционирует в штатном режиме в течение некоторого времени, после чего происходит его аварийное отключение

Признаки проблемы:

  • поток какое-то время был в статусе "in_progress", а затем перешел в "failure";

  • в логах FaceStream есть ошибка типа Interrupt by timeout while reading video frame: 1000 ms..

Возможная причина:

Сервер не успевает получить видеоданные от камеры за установленное время ожидания (таймаут). Это может быть вызвано: высокой загрузкой сети или нестабильным сетевым соединением с камерой.

Решение проблемы: увеличить значение timeout. Его можно задать в теле запроса на создание потока ("create stream)" в секции policies > healthcheck > timeout. Рекомендуется установить значение в диапазоне 3000–10000 мс (3–10 секунд) вместо стандартных 1000 мс. Начинать целесообразно с 3000 мс.

3․ Проблема: Поток не перезапускается автоматически после аварийного завершения работы

Признаки проблемы:

После ошибки поток остается в статусе "failure" и не восстанавливает работу в автоматическом режиме, даже после перезагрузки контейнера.

Возможная причина:

  1. Количество попыток перезапуска исчерпано (если параметр attempt_count задан и превышен).
  2. Возникла критическая ошибка, которая считается системой неустранимой. В этом случае автоматический перезапуск не выполняется, независимо от значения attempt_count.

Решение проблемы:

  1. Увеличить количество попыток автоматического перезапуска. Это значение можно задать в теле запроса на обновление потока ("put stream)" в секции autorestart > attempt_count.
  2. Пересоздать поток вручную, если ошибка носит критический характер.