Детектор черного экрана
"Детектор" чёрного экрана
Описание ситуации
У заказчика начались проблемы с трансляциями. Во время воспроизведения трансляций на устройствах
прерывалась трансляция и появлялся «чёрный экран.
Причина
В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать.
Эта ситуация возникла из-за ошибок при запуске трансляции, поэтому пользователь видел заместитель (placeholder).
Такое решение позволит снизить процент негативных реакций от клиента, поскольку оперативность получения данных о проблеме и ее быстрое решение уменьшают осведомленность клиента о проблеме.
Для автоматизации и решения проблемы было решено создать «Анализатор скриншотов». Он необходим для более быстрой реакции разработчиков на проблему. Это позволит снизить процент негативных реакций от клиента. Оперативность получения данных о проблеме и её быстрое решение уменьшить знание клиента о проблеме.
Примечание:
Данный функционал не доступен пользователю в личном кабинете.
Концепт решения
У каждого клиента/компании есть свой ID связанный с сервером. К этому ID привязываются все устройства компании.
С определенным промежутком сервер отправляет на устройства «ивент».
Запуская «ивент» устройство с помощью детектора проверяет наличие «черного экрана», делая скриншот во время запуска.
После запуска детектора возможно получить два вида ответа:
- После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
- После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент". Промежуток для повторной отправки составляет 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 дня)