Мы разработали дополнительный модуль для приложения заказчика на языке Java с помощью фреймворка Jmix. Jmix-модуль осуществляет настройку ИИ-приложения, запись и хранение видеофайлов, рассылку уведомлений о произошедших инцидентах и предоставляет возможность просматривать видеопоток с камер в режиме онлайн.
ИИ-приложение расположено на отдельном от веб-приложения сервере. Пользователь указывает в веб-приложении адрес и порт ИИ-приложения, после чего программа проверяет его доступность. В рамках первоначальной настройки, веб-приложение генерирует и передает ИИ-приложению токен и ссылку для передачи HTTP POST запросов с информацией об инцидентах.
После первоначальной настройки пользователь может подключить IP-камеры, для чего указывается ссылка на RTSP-поток. Дополнительно можно указать теги и описание, видимые пользователям; настроить браузерные уведомления по ролям/типам пользователей с возможностью открыть новую вкладку с видеопотоком от соответствующей камеры; подключить SMS- и email-уведомления с выбором типов инцидентов.
RTSP-поток с IP-камер захватывается Jmix-приложением и записывается в видеофайлы максимальной продолжительностью 1 час. Указанная информация о камере (теги и описание) и видеофайле (продолжительность, разрешение и другая техническая информация) сохраняется в базе данных, а сам видеофайл в формате mp4 сохраняется в локальном файловом хранилище приложения. Время жизни видеофайла составляет 1 неделю, но если с файлом связан инцидент, его можно удалить только по решению пользователя с соответствующими привилегиями.
Отдельные кадры видеопотока периодически отправляются в ИИ-приложение. При детектировании чрезвычайной ситуации оно отправляет на Jmix-приложение сигнал тревоги, а также данные о событии:
- ID камеры;
- Время возникновения события;
- Тип события;
- Кадр с обведенной рамкой областью, где событие было обнаружено.
При получении сигнала тревоги Jmix-приложение выводит уведомление в браузере для соответствующих категорий пользователей, а также рассылает SMS- и email-уведомления в соответствии с настройками. При нажатии кнопки “Перейти” у пользователя открывается новая вкладка с видеопотоком от камеры, которая зафиксировала событие, и кадром, отображающим обнаруженный инцидент. Это позволяет быстро проверить, не произошла ли ошибка.
Помимо перехода на страницу видеопотока через уведомление, пользователь может перейти на страницу с IP-камерами и посмотреть их видеопоток в режиме реального времени с некоторой задержкой. Для передачи видеопотока с камер приложение разделяет его на небольшие видеофайлы, которые передает в ответ на запросы браузера. Процесс разделения активируется, когда появляются пользователи, просматривающие поток с соответствующей камеры.