Разработка сервиса воспроизведения Video on Demand (проект)

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



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

Задача -- разработать сервис, который будет воспроизводить видеозаписи, хранящиеся на 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. К пользовательскому интерфейсу, если его делать "со всеми удобствами", тоже довольно серьезные требования по отзывчивости (хотя, в минимальной версии этот сервис может иметь весьма аскетичный интерфейс).

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

  • Навыки или страстное желание освоить веб-разработку, крайне желательно придерживаться Ruby on Rails.
  • Владение Linux (придется работать с сервером на виртуальной машине),
  • API соцсетей (опционально)

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

  • Стриминг RTSP/RTMP
  • GoogleDrive API, WebDAV, FTP
  • ONVIF
  • OAuth

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

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

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

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

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

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

Направления развития

Это специфический инструмент. Есть системы управления контентом, типа XIBO, есть playout-серверы для телевизионного вещания или для indoor-TV (панели в супермаркетах и других общественных местах), но здесь решается узкая задача: как контент из облака или своего сервера отправить в поток для дальнейшего использования. Как аналог одного из применений, можно назвать BufferApp - сервис отложенного постинга сообщений в соцсети. Здесь тоже по расписанию, но отправка видеопотоков (интеграция с API сетей может быть вынесена в отдельный проект).

Если рассматривать развитие проекта как самостоятельного сервиса, то он может объединиться с рекордером и работать с облачным хранилищем. Полезно не только для телевизионного применения, но и в более обширной области видеонаблюдения (обычно для этого используют локально установленные сетевые видеорекордеры) и в связанных с ней задачах -- наблюдение с выводом в публичный доступ и т.д. Бывали заказы на timelapse строящихся объектов.

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

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

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

Как записаться?

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

800px-Projects.PNG

Как записаться?

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

800px-Projects.PNG


Ориентировочное расписание занятий

Более точное расписание будет ясно после утверждения графика факультативов, пока ориентируемся на вторник, среду или пятницу во второй половине дня (после 15-16 часов).

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

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

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

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

d.korolev@gmail.com