На начальной стадии проекта наши специалисты работали над Proof of Concept или проверкой концепции. Необходимо было подобрать оптимальный технологический стек и определить, как будет работать сервис.
В пользовательском интерфейсе сервиса наша команда разместила 16 окон: одно для Учителя и 15 для Учеников. Затем мы запускали программу и добивались стабильной работы всех видеопотоков.
Концепция работы приложения выглядела следующим образом:
- перед уроком учитель загружает аудио в приложение;
- студент записывается на урок, проводит оплату;
- в назначенное время ученик открывает приложение или заходит на сайт через мобильное устройство, авторизуется и получает подготовленную аудиозапись;
- система оценивает скорость канала передачи данных и отслеживает, когда ученик присоединяется к уроку.
После того, как мы утвердили технологический стек и протестировали PoC, мы разделили каждый урок на этапы: Разминка, Объяснение, Практика, Отработка и Резюме. У каждого из этапов своя функциональность.
Одна из самых сложных фаз урока – Практика, когда ученики начинают одновременно танцевать. На этом этапе команде нужно было добиться идеальной синхронизации 15-ти видеопотоков.
Проблема с синхронизацией возникала из-за того, что каждый пользователь имел разную скорость соединения, локацию и интернет-провайдера. Поэтому наши специалисты развернули медиа-сервер Wowza, который собирал все видеопотоки. Затем разместили медиа-сервер и сайт приложения на Amazon, что позволило уменьшить нагрузку на устройства пользователей.
Синхронизация была достигнута за счёт использования FFmpeg – инструмента, который позволяет гибко и удобно управлять передачей аудио- и видеопотоков. Для отображения видеопотоков без использования сторонних систем мы решили использовать технологию WebRTC. Это было идеальное решение для безопасной потоковой передачи видео через браузер.
Передачу данных между пользователями и сервисом наши специалисты обеспечили по зашифрованному каналу (SSL/TLS).
Команда IntexSoft использовала итеративный подход. Наши специалисты выполняли задачи параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы.
На протяжении всего проекта мы работали в тесной связи с заказчиком: он выступал в проекте как эксперт в сфере танцевальной индустрии. Работа проходила в режиме постоянного тестирования, в котором принимал участие заказчик. В процессе сотрудничества разработчики демонстрировали проделанную работу и обсуждали дальнейшие планы по развитию сервиса