Разработка микшера видеопотоков RTSP/RTMP (командный проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Компания On-Air.Pro
Учебный семестр Осень 2017
Учебный курс 3-й курс
Максимальное количество студентов, выбравших проект: 2-3



Что это за проект?

Все, наверное, видели, как в телевизионной аппаратной режиссер эфира сидит за пультом,смотрит в стену с мониторами и жмет кнопки. И рядом сидят его коллеги и тоже что-то напряженно делают. Прямой эфир -- это всегда напряжение и ответственность, для его проведения требуются опыт и квалификация. А ещё -- дорогостоящее оборудование и провода до камер (или спутниковые каналы связи). Так было и так есть сейчас. Наша задача -- перенести возможности профессионального телевидения в реальность, где нет таких бюджетов, зато есть доступная цифровая техника, интернет и уже существуют все необходимые компоненты, чтобы сделать телевизионную аппаратную в облаке, а управлять ею с обычного компьютера. Тогда вы уже не привязаны к месту съёмки, перед вами мощности всех датацентров мира за очень разумные деньги, вы решаете задачи, для которых классическому телевидению пришлось бы задействовать массу дорогостоящих ресурсов.

Ключом к успеху здесь является быстрая доставка видеопотоков через интернет (а не сигналов по проводам)от камер к "микшеру" и оттуда -- к режиссеру. Задержки всё портят. Другое отличие -- камеры мы будем использовать тоже необычные. Точнее, самые обычные,но не телевизионные и не бытовые, а камеры видеонаблюдения.

В итоге мы получаем сервис, который принимает потоки от различных источников, переключает их (а также накладывает титры, переходы, делает мультиэкранное изображение и тд), взаимодействует с камерами и так далее. Степень погружения в возможности зависит от вашей продуктивности, в простейшем случае это переключатель потоков RTSP, отдающий итоговый поток RTSP и мультиэкранное изображение с подсветкой выбранного источника.

Проект групповой, движок видеомикшера есть, техника и специально под эти задачи построенная VPN тоже есть. Потребуется его интеграция в рабочий процесс на удаленном сервере, real-time отображение потоков режиссеру, создание отзывчивого фронтенда.

Чему научатся студенты? Что самое интересное в проекте?

Любопытно, но прямых аналогов нет. Движки, причем, функционально богатые, есть, а в явном виде облачный микшер видеопотоков не предлагают. Есть шанс сделать "скайп" для многокамерной съёмки/трансляции. Кто не помнит, скайп в своё время сделал видеосвязь обыденным делом, до него требовалось много приготовлений. Работа связана с движком на базе gstreamer -- само по себе познавательное дело, т.к. применимость gstreamer'а не ограничивается сведением потоков. Помимо этого, здесь предстоит столкнуться с двумя проявлениями отзывчивости: минимизацией задержки видеопотоков (сам по себе RTSP передается почти мгновенно, но как его показать без задержки?) и созданием отзывчивого пользовательского интерфейса. Разумеется, первые версии могут быть аскетичными по возможностям, но отзывчивость будет важна. В зависимости от комплектации группы, будет разрабатываться больше или меньше возможностей. Например, полезный в этой области навык -- управление камерами (ONVIF). Есть смежные проекты, где эта тема получает развитие в трекинг человека или, коррекцию параметров изображения, в имитацию работы оператора (плавные движения, правильная композиция кадра).

Организация работы (Как студенты будут работать в команде?)

Роли и точный состав работ формируется по итогам регистрации желающих участвовать (команда может быть смешанной, в т.ч. со студентами МИЭМ и других факультетов, аналогичная тема заявлена на ярмарке проектов.

Далее организуется slack и трекер (обычно trello), где ведется рабочее общение и трекинг задач. Встречи -- по договоренности (на первых порах это понадобится точно) на Кочновском, альтернативный и более частый вариант -- аудио/видеосвязь. Удобно, т.к. можно собираться по актуальному вопросу безотлогательно и в любое время в любом составе.

Компоненеты (Из каких частей состоит проект?)

1. Движок Snowmix или Voctomix (надо выбрать)

2. Веб-интерфейс и API для взаимодействия с внешним миром, включая аппаратные "кнопки".

3. Плеер предпросмотра потока (формирование быстрого потока из RAW-потока в микшере или RTSP на выходе)

4. (опционально): связка с управлением камерами через ONVIF

Какие будут использоваться технологии?

  • Gstreamer и с ним Snowmix/Voctomix, возможно -- ffmpeg
  • Виртуальные машины linux, nginx и сопутствующие инструменты
  • Быстрая доставка потоков режиссеру -- возможно, WebRTC, но это не догма.
  • Ruby on Rails (для унификации) и необходимые средства для UI (например, meteor, это ещё нужно обоснованно решить).
  • Опционально: ONVIF для управления камерами (переход по предустановленным позициям)

Какие начальные требования?

В любом случае понадобятся навыки программирования (будь то веб-разработка или работа с движком GStreamer/Snowmix), работы с Linux (потому что виртуалка в сети). Остальное -- специфика, с которой можно познакомиться по ходу проекта. Веб-часть на Ruby on Rails -- для унификации с базовым проектом.

Ожидается, что разработчики умеют пользоваться поисковыми системами и stackoverflow. Руководитель может консультировать вас по предметной области (видео/тв), но не по программной разработке.

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

Темы вводных занятий

Не в порядке изложения:

1. Архитектура проекта. API, внешние связи и зависимости.

2. Специфические технологии и используемые инструменты.

3. Доступные ресурсы, организация доступа.

4. Разделение ролей

Критерии оценки

Про работу и оценки почитайте здесь: https://d.pr/143bq

Постарайтесь отнестись к этому с пониманием. Очень часто бодрое начало длится 3-4 недели и потом наступает тишина. Очень хочется, чтобы проекты доводились до запуска, а вы получали опыт успешной разработки и, возможно, работу в этих проектах уже в другом статусе. Но пока это для вас учебная работа, поэтому будем придерживаться описанных по ссылке правил и критериев. Спасибо!

Похожие проекты

Есть приложение-микшер, являющееся прекрасным (но вряд ли быстродостижимым) ориентиром: VMix. Есть приложение для аппаратного микшера, часто используемого в съёмках/трансляциях, но его запустить без самого микшера не получится. Это ориентир "как сейчас делают": Atem от BlackMagic Design.

Контактная информация

Денис Королев,

https://www.hse.ru/staff/dkorolev (там есть ссылки на соцсети)

+7 903 610 3290 (месенджеры по вкусу)

d.korolev@gmail.com