Разработка сервиса воспроизведения Video on Demand (командный проект)
Компания | On-Air.Pro |
Учебный семестр | Осень 2017 |
Учебный курс | 3-й курс |
Максимальное количество студентов, выбравших проект: 3-6 | |
Содержание
|
Что это за проект?
Задача -- разработать сервис, который будет воспроизводить видеозаписи, хранящиеся на Google Drive или указанном WebDAV/FTP сервере по команде или по расписанию, и формировать из них поток RTSP/RTMP. К этому сервису нужен веб-интерфейс и REST API для автоматического взаимодействия. Помимо этого, он должен поддерживать управление через ONVIF, определяясь для остальных устройств как NVR.
Сервис нужен для следующих типовых задач:
1. Воспроизведение в поток по расписанию заготовленных записей. Это нужно для публикации стримов в соцсети (если залить файл, то соцсеть это событие никак не продвигает, а если отправить стрим, то такой контент имеет приоритет для соцсети и его проще продвигать в массы.
2. При воспроизведении по расписанию (по времени, по триггеру) совместно с потоковым микшером можно формировать канал постоянного вещания, переключая микшер на записи по плейлисту и запуская их. При этом хранение контента -- в облаке.
3. При работе с облачным видеомикшером любые записи из архива могут быть включены в эфир.
4. Дополнение к сервису видеозаписи потоков (вместе они образуют полноценный "магнитофон").
Сервис предназначен для формирования видеопотока из видеозаписей. Хранение записей: GoogleDrive, работа по расписанию, по нажатию кнопки. Интерфейс загрузки, каталог пользовательских записей, представление на таймлайне и в календаре (API Google Calendar). Пригодятся: Ruby on Rails, OAuth, соответствующие API. Дополнительно: headless браузер с передачей данных для ввода на странице для формирования потоков с веб-страниц (вебинары и тд). Проект групповой. Правила работы: https://d.pr/143bq
Чему научатся студенты? Что самое интересное в проекте?
Сам по себе процесс запуска воспроизведения из файла в поток -- дело нехитрое: ffmpeg одной простой командой отправит на нужный адрес поток RTMP, а FFSERVER, VLC или аналогичный сервер сформирует RTSP поток, который в реальном времени может забрать любой потребитель (микшер, матрица, монитор и тд). Прочитать файл с аккаунта на GoogleDrive тоже задача не выдающаяся, хотя и полезная в жизненных ситуациях, учитывая, что этот сервис предлагает безлимитные аккаунты. Здесь важно обеспечить управляемость и низкую задержку выполнения команды, а также совместимость с ONVIF. К пользовательскому интерфейсу, если его делать "со всеми удобствами", тоже довольно серьезные требования по отзывчивости (хотя, в минимальной версии этот сервис может иметь весьма аскетичный интерфейс).
Организация работы (Как студенты будут работать в команде?)
Роли и точный состав работ формируется по итогам регистрации желающих участвовать (команда может быть смешанной, в т.ч. со студентами МИЭМ и других факультетов, аналогичная тема заявлена на ярмарке проектов.
Далее организуется slack и трекер (обычно trello), где ведется рабочее общение и трекинг задач.
Встречи -- по договоренности (на первых порах это понадобится точно) на Кочновском, альтернативный и более частый вариант -- аудио/видеосвязь. Удобно, т.к. можно собираться по актуальному вопросу безотлагательно и в любое время в любом составе.
Компоненеты (Из каких частей состоит проект?)
1. RTSP server / RTMP streamer
2. GoogleDrive-интеграция
3. FTP/WebDAV-интеграция
4. Пользовательский интерфейс, расписание, личный кабинет.
5. Поддержка ONVIF
6. REST API
Какие будут использоваться технологии?
- Стриминг RTSP/RTMP
- GoogleDrive API, WebDAV, FTP
- ONVIF
- OAuth
Какие начальные требования?
- Навыки или страстное желание освоить веб-разработку, крайне желательно придерживаться Ruby on Rails.
- Владение Linux (придется работать с сервером на виртуальной машине),
- API соцсетей (опционально)
Темы вводных занятий
Не в порядке изложения:
1. Архитектура проекта. API, внешние связи и зависимости.
2. Специфические технологии и используемые инструменты.
3. Доступные ресурсы, организация доступа.
4. Разделение ролей
Критерии оценки
Про работу и оценки почитайте здесь: https://d.pr/143bq
Постарайтесь отнестись к этому с пониманием. Очень часто бодрое начало длится 3-4 недели и потом наступает тишина. Очень хочется, чтобы проекты доводились до запуска, а вы получали опыт успешной разработки и, возможно, работу в этих проектах уже в другом статусе. Но пока это для вас учебная работа, поэтому будем придерживаться описанных по ссылке правил и критериев. Спасибо!
Похожие проекты
Это специфический инструмент. Есть системы управления контентом, типа XIBO, есть playout-серверы для телевизионного вещания или для indoor-TV (панели в супермаркетах и других общественных местах), но здесь решается узкая задача: как контент из облака или своего сервера отправить в поток для дальнейшего использования. Как аналог одного из применений, можно назвать BufferApp - сервис отложенного постинга сообщений в соцсети. Здесь тоже по расписанию, но отправка видеопотоков (интеграция с API сетей может быть вынесена в отдельный проект).
Контактная информация
Денис Королев,
https://www.hse.ru/staff/dkorolev (там есть ссылки на соцсети)
+7 903 610 3290 (месенджеры по вкусу)
d.korolev@gmail.com