Детектор черного экрана

Материал из SmartPlayer

"Детектор" чёрного экрана

Описание ситуации

У заказчика начались проблемы с трансляциями. Во время воспроизведения трансляций на устройствах
прерывалась трансляция и появлялся «чёрный экран.

Причина

В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать. Эта ситуация возникла из-за ошибок при запуске трансляции, поэтому пользователь видел заместитель (placeholder).

Такое решение позволит снизить процент негативных реакций от клиента, поскольку оперативность получения данных о проблеме и ее быстрое решение уменьшают осведомленность клиента о проблеме.

Для автоматизации и решения проблемы было решено создать «Анализатор скриншотов». Он необходим для более быстрой реакции разработчиков на проблему. Это позволит снизить процент негативных реакций от клиента. Оперативность получения данных о проблеме и её быстрое решение уменьшить знание клиента о проблеме.
Примечание: Данный функционал не доступен пользователю в личном кабинете.

Концепт решения

У каждого клиента/компании есть свой ID связанный с сервером. К этому ID привязываются все устройства компании. С определенным промежутком сервер отправляет на устройства «ивент».
Запуская «ивент» устройство с помощью детектора проверяет наличие «черного экрана», делая скриншот во время запуска.

После запуска детектора возможно получить два вида ответа:

  1. После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
  2. После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент". Промежуток для повторной отправки составляет 10 секунд.

Если же и во второй раз отправляется черный экран, то со стороны сервера отправляется письмо на почту.
Важно: Указанная почта должна быть привязана к серверу.

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

Тонкости и нюансы

1. Для правильного работы необходимо чтобы placeholder с белой точкой воспринимался как черный экран. Поэтому используется не абсолютная проверка.

2. Актуально только при проигрывании видео. При наличии root прав на устройстве – детектор работает нормально. Но, если, на устройстве нет root прав детектор не сможет сделать скриншот.
Исключения:

Скриншот доступен:

- если приложение подписано «подписью разработчика» (уровень прав – Signage)

- Некоторые устройства (Vestel, Hikvision, Phillips) могут сделать скриншот без root прав из-за особенностей прошивки.

3. Если пользователь попробует сделать скриншот без root прав, то создается «пустой скриншот» с надписью «Идёт воспроизведение видео. Отсутствуют права для снятия скриншота».

4. Информация от сервера к разработчикам отправляется через ивент. Внутри отправленного «ивента» сервер ждет callback от разработчиков.

5. Тайм – аут “Callback” на сервере составляет – 30 секунд.

Реализация

Серверное приложение, через определенны промежуток времени («N», настраивается через CLI) отправляет «ивент» на устройства. Устройства после получения «ивента» снимают скриншоты со всех онлайн устройств в компании. Далее происходит анализ скриншота по цвету (картинка «не черная»). Результат этого анализа/ответ отправляется обратно на сервер.

Если картинка черная, серверное приложение повторно делает запрос на данное устройство, спустя 10 секунд. Далее цикл проверки на устройствах проводится еще раз и результат также снова отправляется на сервер. Это делается для того, чтобы точно зафиксировать проблему (возможно на экран попал черный кадр в видео).

При подтверждении нештатной ситуации отправляется письмо на почту администратора. Эта почта указывается при включении этой функциональности.

Скриншоты, снятые с помощью детектора, не хранятся вечно. Срок хранения скриншота три дня. Также они не должны появляться в «истории скриншота».

Итоговый результат

Детектор черных экранов запускается только для конкретных компаний/заказчиков. По умолчанию он выключен. Включение и выключение мониторинга доступно через CLI. При включении данные передаются в настройки CLI. Это:

  • ID компании, для которой включаем детектор
  • Можно передать платформу (или несколько платформ), для которой необходимо запустить мониторинг.

Например: передаем ANDROID и мониторинг включается только для устройств ANDROID

  • E-mail адрес или несколько адресов на которые должно отправляться уведомление о нештатной ситуации
  • Указанное время хранения скриншотов (по умолчанию 3 дня)