FMS Live Video: архитектура и примеры реализации

This post is also available in: Английский

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

Источник видео сигнала

При проектировании системы онлайн видео трансляций крайне важно понимать каким образом Вы будете получать видео контент (онлайн видео потоки): будет это антенный сигнал, Интернет видео поток (RTSP например) или пользователи сами будут публиковать видео потоки. Формат, количество видео потоков.
В зависимости от этого нужно подобрать энкодеры, транскодеры. Если сигнал идет с антенны, то как правило требуются энкодеры с SDI входами, выбор которых зависит от количества сигналов. Иногда достаточно платы видеозахвата с SDI входом и Flash Media Live Encoder. При подборе оборудования важно понимать какие форматы видео сигнала Вы будете получать, сколько всего видео потоков будет. Также стоит определить требования к расширенным функциям оборудования: кодирование видео с динамическим битрейтом, публикация потоков на нескольких серверах одновременно и т.д.

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

Итак, первые вопросы, на которые стоит найти ответ:

  • Как видео сигнал попадет к Вам?
  • Каким образом Вы его подготовите к распространению пользователям?
  • Какое оборудование потребуется для обработки сигналов?

Origin / Edge пул Flash Media Server’ов

Географически распределенная система Flash Media Server’ов для распределения видео потоков. Среди многочисленных ресурсов Adobe есть подробные инструкции по разработке подобных конфигураций на базе Flash Media Server.

При проектировании системы очень важно понимать технологию доставки видео потоков конечному пользователю. Проблемы с качеством доступа в сеть Интернет очень сильно сказываются на проектах онлайн трансляций. Поэтому эффективная реализация системы доставки контента пользователю в таких проектах особенно важна. Возможными вариантами решения задачи могут быть:

  • построение географически распределенного кластера Flash Media серверов с Edge серверами расположенными близко к основным областям потребления контента
  • использование услуг CDN провайдера у которого географически распределенный кластер уже построен и скорее всего расчитан на существенно более высокие нагрузки чем будет создавать Ваш проект (по крайней мере на первом этапе, пока Ваша популярность не превысит Facebook)
  • использование инновационных P2P технологий доставки контента

Построение собственного кластера требует высоких инвестиций на старте, соответственно нужно качественно выполнить финансовое планирование. Основная задача, которую решает Origin / Edge конфигурация — это равномерное распределение нагрузки, что дает возможность максимально качественного обслуживания пользователей. Кроме того, этот подход требует наличия в команде разработчиков экспертов в области Flash Media технологий. Им нужно будет разработать как минимум технологию распределения нагрузки между Flash Media Server’ами, алгоритмы отказоустойчивости и инициализации видео потоков на серверах, а возможно и механизмы авторизации, ограничения доступа, записи видео потоков и другие дополнительные сервисы. Наиболее популярные рекомендации при расчете количества серверов: 4 Edge на каждый Origin, не более 3 Гб/с нагрузки на каждый Edge.

Часто бывает удобно реализовать балансировку нагрузки при помощи RTMP Redirect механизма, используя Flash Media Server приложение в качестве балансировщика нагрузки. По нашему опыту на восьмиядерном сервере вполне реально достичь обработки 1000 поступающих подключений в секунду.

Использование услуг CDN требует грамотного подхода к монетизации контента. По сути Вы оплачиваете просмотр видео контента Вашим пользователям. Откуда берутся средства на оплату одной минуты (или даже лучше 1 Гб) трансляции? Платит пользователь или рекламодатель. Постарайтесь построить четкую финансовую модель и это поможет Вам четко оценить доступны ли Вам услуги CDN или на данном этапе лучше использовать альтернативные решения. В случае использования CDN услуг Вам достаточно реализовать Origin сервер и основную бизнес логику проекта (например, авторизация пользователей). Масштабирование обеспечит CDN партнер.

Альтернативный вариант использования P2P технологий. В первом приближении использование новой технологии Adobe кажется спасением для онлайн видео трансляций, т.к. с одной стороны не требует существенных инвестиций в начале проекта (правда Flash Media Enterprise Server очень недешевый), с другой стороны при популярности Вашего контента обеспечивает проект географически распределенной системой доставки видео контента (в некотором роде у Вас становится много маленьких Edge серверов). На данный момент технология является очень новой и требует многократной обкатки в коммерческих проектах (впрочем, уже есть первые успешные проекты). Возможно, использование новых технологий принесет Вашему проекту существенное конкурентное преимущество?

В итоге нужно ответить на следующий вопрос: какая схема доставки контента подходит Вашему проекту с финансовой и технической точек зрения?

Бизнес логика

Flash Media Server позволяет выполнять разработку специализированной бизнес логики для обеспечения монетизации контента. Наиболее популярные механизмы монетизации: периодичные подписки, разовые покупки. Для этих целей, как правило, используются механизмы внешней авторизации — Flash Media Server обращается к внешнему веб сервису для определения доступности контента определенному пользователю. В целях обеспечения производительности рекомендуется реализовывать внешнюю авторизацию при помощи C++ плагинов Flash Media Server.
Также при помощи Flash Media Server’ов могут быть реализованы различные дополнительные сервисы:

  • DVR — запись видео потоков и перемотка онлайн трансляции (timeshift)
  • Video Snapshot — получение стопкадров из видео потоков
  • Virtual Channels — виртуальные ТВ каналы, собираемые из видео файлов

Иногда требуется предусмотреть возможность интеграции с биллингом или статистической системой — для этого подойдут логи Flash Media Server или если требуется онлайн обработка, то потребуется механизм, подобный внешней авторизации.

При трансляции премиум контента или просто при желании обеспечить защиту контента необходимо использование Adobe Flash Access 2.0. Этот продукт позволяет защитить видео контент от несанкционированного доступа и распространения (часто является требованием крупных правообладателей).

Итак, вопросы на которые стоит ответить при проектировании:

  • Требуется ли авторизация пользователей при доступе к видео контенту?
  • Какие дополнительные сервисы будут предложены пользователям? Разработка каких механизмов для этого потребуется на серверной части?
  • Нужен ли механизм тарификации доступа (биллинг)? Онлайн или офлайн?

Flash видео плеер

Реализация Flash видео плеера для онлайн видео трансляций слабо отличается от плеера для обычных видео файлов при использовании RTMP протокола. Значительные изменения требуются при реализации дополнительных функций (DVR, Timeshift), т.к. требуют особого управления подключением к видео серверу (особенно если буфер видеозаписи кольцевой). Обработка RTMP Redirect также выполняется вручную.
Настоятельно рекомендуем использовать отслеживание QoS метрик в видео плеере через Google Analytics или Omniture (это можно сделать при помощи бесплатной библиотеки TiViSta).

В итоге должна получиться схема похожая на приведенную ниже:

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

Напоследок стоит задуматься об использовании мобильных устройств в качестве видео камер (мобильный репортер) и трансляций на мобильные устройства. Интересные реализации сервисов онлайн видео трансляций: livestream.com, ustream.com, justin.tv