Разработка редактора компоновок для сервиса потокового видеовещания (командный проект)
Что это за проект?
Редактор компоновок позволяет из нескольких видеопотоков собрать на одном экране композицию, загрузить/выбрать фон, добавить текстовые и графические элементы. Используется в прямых трансляциях, записи, подключается к микшеру потоков или непосредственно к источнику трансляции. Это не видеомикшер в обычном понимании (про видеомикшер есть отдельная тема), а отдельный модуль, использующий тот же движок, но для формирования составной картинки, использоваться выходной поток может как сам по себе (сразу в трансляцию/запись), так и в микшере среди прочих входов. Основная область применения -- трансляция лекций и других мероприятий, где одновременно нужно показывать выступающего и экран, при этом, нет ресурсов на режиссуру в эфире. Здесь важно иметь возможность сделать 2-3 компоновки, заставку и переключать их время от времени в зависимости от происходящего. Высоких требований к скорости выполнения, как в микшере, нет (2-3 секунды задержки не критичны). С другой стороны, здесь требуется создать конструктор компоновок и интерфейс управления ими во время эфира, и всё это на том же движке, что микшер. В развитие проекта для интересующихся соответствующими направлениями можно предложить автопереключение компоновок (анализ потоков на изменения и принятие режиссерских решений).
Чему научатся студенты? Что самое интересное в проекте?
Как и в Микшере, работа связана с движком на базе gstreamer -- само по себе познавательное дело, т.к. применимость gstreamer'а не ограничивается сведением пото созданием отзывчивого пользовательского интерфейса.
В зависимости от комплектации группы, будет разрабатываться больше или меньше возможностей. Например, полезный в этой области навык -- анализ потоков для дальнейшего принятия режиссерских решений. Интересующимся этой темой может быть полезно заглянуть в проекты про автоматическую съёмку и автоматическую режиссуру.
Коротко о связи с реальностью: изначально именно компоновки были соновной идеей On-air.pro, который строился как публичный сервис для трансляции лекций с нескольких источников. Но всилу ограничений используемого движка компоновки не стали киллер-фичей, зато сервис увлеченно транслирует в соцсети. Тем не менее, как только созреет микшер, редактор компоновок и другие модули, выставленные на проработку, они займут своё место в проекте.
Организация работы (Как студенты будут работать в команде?)
Роли и точный состав работ формируется по итогам регистрации желающих участвовать (команда может быть смешанной, в т.ч. со студентами МИЭМ и других факультетов, аналогичная тема заявлена на ярмарке проектов.
Далее организуется slack и трекер (обычно trello), где ведется рабочее общение и трекинг задач. Встречи -- по договоренности (на первых порах это понадобится точно) на Кочновском, альтернативный и более частый вариант -- аудио/видеосвязь. Удобно, т.к. можно собираться по актуальному вопросу безотлагательно и в любое время в любом составе.
Компоненеты (Из каких частей состоит проект?)
Backend -- движок на основе gstreamer (SnowMix / Voctomix) Frontend -- 1. редактор компоновок с загрузкой элементов оформления, библиотекой этих элементов и сохранением пресетов, 2. также эфирный контроллер (переключатель компоновок во время эфира). Фактически, это выбор из подготовленных к эфиру компоновок. Превью задействованных источников нужно, но может быть урезанным. 3. титровальня (в простом случае -- список заранее написанных титров и выбор нужных в момент показа). Для увлеченных распознаванием можно предложить отдельный подпроект с автодетекцией человека в кадре (обучение по фото или, если совсем уходить в фантастику -- по открытым данным, соцсетям и тд).
Какие будут использоваться технологии?
- Gstreamer и с ним Snowmix/Voctomix, возможно -- ffmpeg
- Виртуальные машины linux, nginx и сопутствующие инструменты
- Ruby on Rails (для унификации) и необходимые средства для UI (например, meteor, это ещё нужно обоснованно решить).
- Опционально: ONVIF для управления камерами (переход по предустановленным позициям)
Какие начальные требования?
В любом случае понадобятся навыки программирования (будь то веб-разработка или работа с движком GStreamer/Snowmix), работы с Linux (потому что виртуалка в сети). Остальное -- специфика, с которой можно познакомиться по ходу проекта. Веб-часть на Ruby on Rails -- для унификации с базовым проектом.
Ожидается, что разработчики умеют пользоваться поисковыми системами и stackoverflow. Руководитель может консультировать вас по предметной области (видео/тв), но не по программной разработке.
Разработка обычно имеет недельный цикл трекинга, встречи (как индивидуальные, так и групповые) по умолчанию -- по видеосвязи, но порой надо и очно (на факультете). Необходимые технические и серверные ресурсы предоставляются.
Темы вводных занятий
Не в порядке изложения:
1. Архитектура проекта. API, внешние связи и зависимости.
2. Специфические технологии и используемые инструменты.
3. Доступные ресурсы, организация доступа.
4. Разделение ролей
Критерии оценки
Про работу и оценки почитайте здесь: https://d.pr/143bq
Постарайтесь отнестись к этому с пониманием. Очень часто бодрое начало длится 3-4 недели и потом наступает тишина. Очень хочется, чтобы проекты доводились до запуска, а вы получали опыт успешной разработки и, возможно, работу в этих проектах уже в другом статусе. Но пока это для вас учебная работа, поэтому будем придерживаться описанных по ссылке правил и критериев. Спасибо!
Похожие проекты
Любые вебинары, сервисы многосторонней видеосвязи -- все они показывают несколько потоков на одном экране. Но, кто пробовал делать трансляцию какой-нибудь конференции или защит через GoogleHangouts, поймёт, почему для этих целей видеоболтушки не используют. Есть нынешняя версия On-Air.Pro, где поддерживаются многоэкранные компоновки, но там есть проблемы синхронизации потоков и, главное, компоновки во время трансляции менять нельзя. Всё потому, что там работает ffmpeg, а надо бы движок видеомикшера.
Проект разработки потокового видеомикшера на ярмарке проектов: https://pf.hse.ru/208034867.html
Контактная информация
Денис Королев,
https://www.hse.ru/staff/dkorolev (там есть ссылки на соцсети)
+7 903 610 3290 (месенджеры по вкусу)
d.korolev@gmail.com