Название команды: "MISIS - Rigel"
Хакатон: TRUE-TECH-HACK (см. https://true-tech-hack.ru/)
Организатор хакатона: МТС
АДАПТАЦИЯ ФИЛЬМОВ ДЛЯ ЛЮДЕЙ С ОСОБЫМИ ПОТРЕБНОСТЯМИ
Разработать дополнительный функционал для плеера KION, который поможет пользователям комфортно смотреть любимые фильмы и сериалы. Например, настраивать яркость и контрастность изображения, цветовую палитру и удалять сцены, которые могут вызвать эпилептический припадок
- Микросервисная архитектура
- Pub-Sub архитектура
- Брокер сообщений
- Pipeline (multiprocessing)
- Микросервис по загрузке видео: Загружает видео, разбивает на фрагменты (MPEG-TS) HTTP Live Streaming В качестве протокола для передачи видео был выбран (HTTP Live Streaming)
- Микросервис по обработке видео (получает запрос на обработку определенного сегмента видео, обрабатывает сегмент через конвейер, потом записывает результат в новый сегмент и отправляет обратно)
- Микросервис по загрузке видео (Делит определенное видео на сегменты по качеству (H256 стандарт), загружает результат в MongoDB)
- MongoDB (сохраняет сегменты)
- Apache Kafka (отправляет сообщения между микросервисами video_processing и video_streaming)
- PostgreSQL (сохраняет настройки)
Для запуска приложений вы должны убедиться, что у вас запущены экземпляры MongoDB, PostgreSQL, Apache Kafka.
video_streaming:
$ cd video_streaming
$ make start
video_processing:
$ cd video_processing
$ pip install requirements.txt
$ make start
video_upload:
$ cd video_upload
$ pip install requirements.txt
$ python src/main.py -input Ваше_Видео
Предобработка
- Видео делится на сегменты (MPEG-TS) в микросервисе (video_upload)
- Сегменты (MPEG-TS) и информация о видео (M3U8) загружается в MongoDB как байтовая информация Сам запрос
- Загружаем видео как ссылка на M3U8 файл
- Микросервис (video_streaming) посылает в очередь запрос на выдачу m3u8 файла и на выдачу сегментов
- video_processing обрабатывает сегмент через конвейер, или отсылает m3u8 файл.
- video_processing отсылает сегмент в video_streaming через Apache Kafka.
- video_streaming сохраняет сегменты и m3u8 файл в специальной папке, из которой идет поток видео
- Frontend отправляет запрос, содержащий измененные настройки
- Сохраняем настройки в базе данных, пользователя определяем по UUID (Authorization Token)
- Выбираем видео (вставляется ссылка на m3u8), для просмотра видео для адаптации людей с дальтонизмом и эпилепсии должны выбрать настройки
- Смотрим видео и наслаждаемся :)
- Выбираем себе настройки (будет дано 30 картинок по три типа дальтонизма (Протанопия, Дейтеранопия, Тританопия) с выбором настройки )
- Возмощность работать со всеми качествами видео (формат H256)
- Обработка видео на основе технологий Big Data
- Сохранение результатов в базу данных
- Архитектура спокойно может обрабатывать большие файлы (благодаря сохранению сегментов)
- Сделать DevOps
- Сделать привязку backend и frontend
- Сделать аналитический центр для
- Улучшить алгоритмы машинным обучением
- Улучшить Big data архитектуру (например, добавить Apache Spark)
- Улучшить код (Документация кода, использовать более быстрые методы, добавить оптимизацию кадра, использовать определенные шаблоны для видеообработки)
- Добавить бизнес-правила для MongoDB, PostgreSQL и Kafka
- Сделать удаление сегментов, если необходимость от них пропала
За основу алгоритмов были взяты
- Color Blindness Algorithm Comparison for Developing an Android Application
- Effective Flicker Detection Technique Using Artificial Neural Network for Video
- Live Video and Image Recolouring for Colour Vision Deficient Patients
- How to fade img in Python
- Convert strings and slices using the officially recommended way
*Все алгоритмы свободны от паттернов
Участники:
- Игорь Извеков (Telegram: @izveigor, Github: izveigor) - Backend Developer (капитан)
- Алексей Нижгородов (Telegram: @nizhgo, Github: nizhgo) - Frontend Developer
- Коновалов Егор (Telegram: @foldll, Github: wtfnukee) - Data Scientist
- Бобков Максим (@DeMaXiTo) - Дизайнер
Все участники являются студентами "НИТУ МИСиС"