Техническое задание
1. Общее описание
Требуется реализовать мобильное приложение для записи видео и отправки его на сервер с функционалом детекции лиц.
Процесс работы с приложением:
Запуск приложения
Выдача разрешений на использование камеры и записи в память устройства
Человека садится в область видимости фронтальной камеры устройства
Автоматически детектируется лицо человека и появляется возможность начать запись видеоролика
Начинается запись видеоролика процесса предоставления услуги человеку.
По истечении заданного в настройках времени запись автоматически останавливается, видеоролик отправляется на сервер, находящийся в том же помещении, на экран выводится сообщение об успешном завершении записи. Также в углу основного экрана приложения необходимо выводить числом текущее количество сохраненных локально файлов (которые стоят в очереди на отправку).
При возникновении ошибки в процессе отправки видео - видео остается на устройстве и продолжаются попытки выполнить загрузку файла на сервер.
2. Основные требования
2.1. Детекция лица человека в кадре
Поиск лица осуществляется на изображении с фронтальной камеры устройства. Расстояние до камеры для продолжения процесса должно быть в пределах от 50 до 100 сантиметров от устройства. При обнаружении лица на изображении с камеры, оно подсвечивается красной рамкой в случае, если лицо слишком далеко, слишком близко, не по центру или повернуто в бок. В случае, если лицо находится в правильных диапазонах расположения - рамка становится зеленой. Параметры дальности, смещения и максимального угла поворота задаются в настройках приложения.
После обнаружения лица в кадре и определения правильности его позиции, для пользователя появляется возможность начать запись видеоролика. Появляется кнопка начала записи.
2.2. Запись видеоролика
Запись осуществляется также на фронтальную камеру устройства. Длина видеоролика указывается в настройках, по истечении которой запись автоматически прекращается, отсчет идет в обратном направлении. Файл записи сохраняется на устройстве. Инициирование начала записи происходит по нажатию на кнопку, появляющуюся в случае обнаружения в кадре лица и расчета его правильного позиционирования. Разрешение камеры - FullHD.
В процессе видеосъемки пользователь может остановить запись, что приведет к уничтожению текущего ролика и переходу к шагу 1.
В случае выхода клиента из кадра и отсутствия лица в процессе съемки, или выхода параметров лица за пределы допустимых - съемка автоматически прерывается без сохранения ролика. На экран выводится сообщение, что запись прервана из-за неправильного позиционирования лица человека (находится на экране в течение 10 секунд). Также звучит звуковой сигнал о прерывании записи (персонал, начинающий запись должен быть в курсе прерывания процесса записи для рестарта)
2.3. Отправка записанного видеоролика на сервер
По истечению времени записи ролик заносится в память устройства, а после происходит отправка сформированного файла на Windows сервер, находящийся с текущим устройством в локальной сети, в одном помещении. Протокол передачи файла согласуется с Заказчиком.
Данный процесс должен занимать не более 2 минут с момента окончания записи (в случае отсутствия проблем при записи на стороне сервера).
В дополнение к ролику на сервер необходимо отправить json файл, содержащий id устройства, (которое задается в настройках) и время записи в UTC.
Название файла видеоролика задается по шаблону id_устройства_дата_время в формате UTC
В случае возникновения ошибки при отправке файл записи остается на устройстве, пользователю выводится уведомление об этом, и через указанное в настройках время попытка отправки повторяется. Процесс повторяется бесконечно, пока все файлы в памяти устройства не будут отправлены на сервер.
Расширение файла - MP4.
2.4. Экран настроек
Доступ к экрану настроек осуществляется через кнопку на главном экране приложения. К настройке возможны следующие параметры:
ID устройства (произвольная строка)
Время записи ролика в секундах
Максимальные пропорции площади лица к общему размеру вьюпорта камеры, для определения состояния “лицо слишком близко” и вывода подсказки “лицо слишком близко”
Минимальные пропорции площади лица к общему размеру вьюпорта камеры, для определения состояния “лицо слишком далеко” и вывода подсказки “лицо слишком далеко”
Максимальное смещение центра лица от центра вьюпорта камеры (в процентах) для определения состояния “лицо не в центре” и вывода подсказки “смотрите на камеру ровно”
Максимальный угол наклона головы в бок для определения состояния “лицо слишком наклонено” и вывода подсказки “смотрите прямо в камеру”
2.5. Техническое оснащение
В качестве устройства записи используется планшет Lenovo Tab P11 TB350FU (ZABF0065RU).
Количество устройств в сети - не более 20.
Сервер на базе ОС Windows, находящийся в том же помещении, что и устройства записи и одной сети. Накопитель данных на этом сервере - SSD, для приемлемой скорости записи отправляемых файлов.
Wifi сеть с поддержкой 5Ггц канала передачи данных
2.5. Технологии
Приложение разрабатывается на базе ЯП Kotlin с использованием библиотеки для детекции лиц Google MLKit Face Detection.
Операционная система устройства и его минимальная версия - Android 12.
( + 50 тыс. за срочность)