Разработка микшера видеопотоков RTSP/RTMP (проект)
Ментор | Королев Денис |
Учебный семестр | Осень 2017 |
Учебный курс | 2-й курс |
Проект можно развивать на летней практике | |
Максимальное количество студентов, выбравших проект: 5-10 | |
Что это за проект?
Все, наверное, видели, как в телевизионной аппаратной режиссер эфира сидит за пультом,смотрит в стену с мониторами и жмет кнопки. И рядом сидят его коллеги и тоже что-то напряженно делают. Прямой эфир -- это всегда напряжение и ответственность, для его проведения требуются опыт и квалификация. А ещё -- дорогостоящее оборудование и провода до камер (или спутниковые каналы связи). Так было и так есть сейчас. Наша задача -- перенести возможности профессионального телевидения в реальность, где нет таких бюджетов, зато есть доступная цифровая техника, интернет и уже существуют все необходимые компоненты, чтобы сделать телевизионную аппаратную в облаке, а управлять ею с обычного компьютера. Тогда вы уже не привязаны к месту съёмки, перед вами мощности всех датацентров мира за очень разумные деньги, вы решаете задачи, для которых классическому телевидению пришлось бы задействовать массу дорогостоящих ресурсов.
Ключом к успеху здесь является быстрая доставка видеопотоков через интернет (а не сигналов по проводам)от камер к "микшеру" и оттуда -- к режиссеру. Задержки всё портят. Другое отличие -- камеры мы будем использовать тоже необычные. Точнее, самые обычные,но не телевизионные и не бытовые, а камеры видеонаблюдения.
В итоге мы получаем сервис, который принимает потоки от различных источников, переключает их (а также накладывает титры, переходы, делает мультиэкранное изображение и тд), взаимодействует с камерами и так далее. Степень погружения в возможности зависит от вашей продуктивности, в простейшем случае это переключатель потоков RTSP, отдающий итоговый поток RTSP и мультиэкранное изображение с подсветкой выбранного источника.
Проект групповой, движок видеомикшера есть, техника и специально под эти задачи построенная VPN тоже есть. Потребуется его интеграция в рабочий процесс на удаленном сервере, real-time отображение потоков режиссеру, создание отзывчивого фронтенда.
Чему вы научитесь?
Любопытно, но прямых аналогов нет. Движки, причем, функционально богатые, есть, а в явном виде облачный микшер видеопотоков не предлагают. Есть шанс сделать "скайп" для многокамерной съёмки/трансляции. Кто не помнит, скайп в своё время сделал видеосвязь обыденным делом, до него требовалось много приготовлений. Работа связана с движком на базе gstreamer -- само по себе познавательное дело, т.к. применимость gstreamer'а не ограничивается сведением потоков. Помимо этого, здесь предстоит столкнуться с двумя проявлениями отзывчивости: минимизацией задержки видеопотоков (сам по себе RTSP передается почти мгновенно, но как его показать без задержки?) и созданием отзывчивого пользовательского интерфейса. Разумеется, первые версии могут быть аскетичными по возможностям, но отзывчивость будет важна. В зависимости от комплектации группы, будет разрабатываться больше или меньше возможностей. Например, полезный в этой области навык -- управление камерами (ONVIF). Есть смежные проекты, где эта тема получает развитие в трекинг человека или, коррекцию параметров изображения, в имитацию работы оператора (плавные движения, правильная композиция кадра).
Какие начальные требования?
В любом случае понадобятся навыки программирования (будь то веб-разработка или работа с движком GStreamer/Snowmix), работы с Linux (потому что виртуалка в сети). Остальное -- специфика, с которой можно познакомиться по ходу проекта. Веб-часть на Ruby on Rails -- для унификации с базовым проектом.
Ожидается, что разработчики умеют пользоваться поисковыми системами и stackoverflow. Руководитель может консультировать вас по предметной области (видео/тв), но не по программной разработке.
Разработка обычно имеет недельный цикл трекинга, встречи (как индивидуальные, так и групповые) по умолчанию -- по видеосвязи, но порой надо и очно (на факультете). Необходимые технические и серверные ресурсы предоставляются.
Какие будут использоваться технологии?
- Gstreamer и с ним Snowmix/Voctomix, возможно -- ffmpeg
- Виртуальные машины linux, nginx и сопутствующие инструменты
- Быстрая доставка потоков режиссеру -- возможно, WebRTC, но это не догма.
- Ruby on Rails (для унификации) и необходимые средства для UI (например, meteor, это ещё нужно обоснованно решить).
- Опционально: ONVIF для управления камерами (переход по предустановленным позициям)
Темы вводных занятий
Не в порядке изложения:
1. Архитектура проекта. API, внешние связи и зависимости.
2. Специфические технологии и используемые инструменты.
3. Доступные ресурсы, организация доступа.
4. Разделение ролей
Направления развития
Как микшер -- ядро телестудии, так и потоковый микшер связывает несколько разработок в мощный набор инструментов для организации полного цикла производства медиаконтента практически без капитальных вложений (не нужна закупка дорогостоящего оборудования, используется сервисная модель и облачные серверы). Сам видеомикшер имеет два основных пути развития: как движок для непритязательных (выполняет монтажные функции, но не имеет выраженного "микшерного" интерфейсы, и как полноценный видеомикшер со всеми инструментами профессионального назначения. Этот проект может развиваться долго и стать стандартом де-факто для режиссеров потоковых эфиров. В такого рода проектах есть богатое поле для автоматизации и интеллектуализации рабочих процессов, есть множество рутинных процедур, которые могут быть сняты с человека, вплоть до разработки "автопилота" эфира (про это есть отдельный проект).
Критерии оценки
Про работу и оценки почитайте здесь: https://d.pr/143bq
Постарайтесь отнестись к этому с пониманием. Очень часто бодрое начало длится 3-4 недели и потом наступает тишина. Очень хочется, чтобы проекты доводились до запуска, а вы получали опыт успешной разработки и, возможно, работу в этих проектах уже в другом статусе. Но пока это для вас учебная работа, поэтому будем придерживаться описанных по ссылке правил и критериев. Спасибо!
Как записаться?
В общем доступе есть порядка двадцати проектов, относящихся к области видеотехнологий (стриминг, доставка потоков и т.д.). Чтобы всем было проще, эти проекты объединим в четыре группы и при записи на проект выбирайте группу, а конкретный проект и вашу роль в нем мы обсудим уже в рабочем порядке.
Ориентировочное расписание занятий
Более точное расписание будет ясно после утверждения графика факультативов, пока ориентируемся на вторник, среду или пятницу во второй половине дня (после 15-16 часов).
На самом деле, для общения (как индивидуального, так и группового) удобно использовать средства видеосвязи -- это не заменяет очных встреч, но отлично дополняет их за счет возможности оперативно решать задачи "здесь и сейчас", сидя за удобным вам рабочим местом. Практически все темы проектов подразумевают работу в сети.
Денис Королев,
https://www.hse.ru/staff/dkorolev (там есть ссылки на соцсети)
+7 903 610 3290 (месенджеры по вкусу)
d.korolev@gmail.com