Skip to content

itatmisis/MISIS-RIGEL-TRUE-TECH-HACK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TRUE-TECH-HACK

О хакатоне

Название команды: "MISIS - Rigel"

Хакатон: TRUE-TECH-HACK (см. https://true-tech-hack.ru/)

Организатор хакатона: МТС

Проблема

АДАПТАЦИЯ ФИЛЬМОВ ДЛЯ ЛЮДЕЙ С ОСОБЫМИ ПОТРЕБНОСТЯМИ

Разработать дополнительный функционал для плеера KION, который поможет пользователям комфортно смотреть любимые фильмы и сериалы. Например, настраивать яркость и контрастность изображения, цветовую палитру и удалять сцены, которые могут вызвать эпилептический припадок

Архитектура

архи

Стэк технологий

Frontend: фронт Backend: бэк

Шаблоны проектирования

  • Микросервисная архитектура
  • 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 Ваше_Видео

Порядок действий (Backend)

Отправка видео

Предобработка

  1. Видео делится на сегменты (MPEG-TS) в микросервисе (video_upload)
  2. Сегменты (MPEG-TS) и информация о видео (M3U8) загружается в MongoDB как байтовая информация Сам запрос
  3. Загружаем видео как ссылка на M3U8 файл
  4. Микросервис (video_streaming) посылает в очередь запрос на выдачу m3u8 файла и на выдачу сегментов
  5. video_processing обрабатывает сегмент через конвейер, или отсылает m3u8 файл.
  6. video_processing отсылает сегмент в video_streaming через Apache Kafka.
  7. video_streaming сохраняет сегменты и m3u8 файл в специальной папке, из которой идет поток видео

Сохранение настроек

  1. Frontend отправляет запрос, содержащий измененные настройки
  2. Сохраняем настройки в базе данных, пользователя определяем по UUID (Authorization Token)

Порядок действий (Frontend)

Отправка видео

  1. Выбираем видео (вставляется ссылка на m3u8), для просмотра видео для адаптации людей с дальтонизмом и эпилепсии должны выбрать настройки
  2. Смотрим видео и наслаждаемся :)

Сохранение настроек

  1. Выбираем себе настройки (будет дано 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) - Дизайнер

Все участники являются студентами "НИТУ МИСиС"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published