Базовые принципы работы Wowza Streaming Engine для медиасайта

2019-11-01 17:41:00

В данной статье мы рассмотрим базовые принципы применения Wowza Streaming Engine для построения медиапортала. Чтобы не усложнять понимание, мы не будем затрагивать вопросы биллинга и монетизации сервиса, а также глубоко разбирать техническую сторону.

Ниже представлена общая схема работы медиапортала, а также порядок обработки пользовательского запроса на просмотр потока или видео ролика. Как видно, медиа сервер Wowza Streaming Engine является лишь исполнительным механизмом, обеспечивая передачу видео и аудио данных на устройства конечных пользователей, а не центральным звеном портала, отвечающим за логику взаимодействия с пользователем. Wowza Streaming Engine не работает под управлением движка веб сайта или сервера базы данных и не предоставляет пользовательского интерфейса. Однако именно он позволяет решить задачу доставки потокового видеоконтента на клиентские устройства пользователей

У многих складывается впечатление, что программное обеспечение "медиасервер" должно обеспечивать полный список средств для создания портала, включая интерфейс конечного пользователя , бизнес логику и CMS управления видеоконтентом. Но это не так, и за разные части портала отвечают отдельные компоненты, которые, однако, отлично интегрируются между собой. Итак, чего не предоставляет продукт Wowza Streaming Engine:

  • Получение исходного видеосигнала непосредственно c карты захвата, HDMI, SDI или USB порта
  • Интерфейс сайта для конечного пользователя.
  • Хранение описаний и метаданных медиаконтента.(CMS)
  • Сервер баз данных.
  • Передачу ссылок на просмотр контента напрямую конечному пользователю.
  • Интерфейс медиа плеера для воспроизведения материала и/или его сохранения на локальный диск.
  • Предоставление средств обеспечения монетизации и биллинга.

Медиа сервер Wowza Streaming Engine предназначен для выполнения следующих действий::

  • Прием IP-потоков практически во всех известных форматах (поддерживаются RTPM, SRT, RTP/RTSP, MPEG TS UDP Multicast/Unicast, HLS, Shoutcast/ICY, WebRTC).
  • Транскодирование входящих IP-потоков, с последующим формированием потоков в различных битрейтах и разрешениях.
  • Запись потока в MP4 файлы и просмотр файлов в режиме VOD (поддерживаются контейнеры mp4, mp3, flv, ism).
  • Преобразование потока в формат потоковой передачи Live и VOD контента пригодный для доставки на абонентские устройства.
  • Обеспечение защиты контента от несанкционированного просмотра (встроенными средствами Wowza или интеграцией со сторонними DRM/CAS системами).
  • Обеспечение резервированной и отказоустойчивой системы раздачи медиаконтента.

Рассмотрим подробнее, как происходит процесс обработки данных на сервере Wowza.

Для примера остановимся на одном из самых распространенных сценариев, с исходным потоком UDP Multicast SPTS с компрессией MPEG-2. Такой исходный поток для вещания в интернете не подходит однозначно. Во-первых, высокий битрейт, во-вторых, UDP нельзя передать через внешние сети без потерь и часто провайдера совсем блокируют передачу UDP пакетов, в-третьих поток кодированный видеокодеком MPEG2 не может быть воспроизведен плеером на веб странице или в мобильном устройстве. Все эти параметры исходного потока могут быть преобразованы Wowza сервером, также можно сформировать несколько дополнительных Live-потоков с более низкими параметрами качества. Это поможет передать контент по узким каналам связи (в том числе с переменной полосой пропускания).

Транскодирование и конвертация формата потока средствами Wowza Streaming Engine:

  • Поддерживается конвертация из одного формата потокового видео в другой, для всех протоколов потоковой передачи медиаданных, что обеспечивает возможность воспроизведения потока любым веб плеером или устройством
  • Транскодирование любого потока производится только 1 раз, а не для каждого протокола передачи данных в отдельности
  • Транскодирование потока “на лету” может производиться как с помощью процессорной мощности, так и на базе GPU, что позволяет освободить мощности CPU для других задач.

Более подробно о транскодировании в Wowza , можно узнать перейдя по этой ссылке.

Запись потока и просмотр видеофайлов

Wowza Streaming Engine позволяет записывать live поток в MP4 файл, который можно в дальнейшем просматривать прямо с Wowza сервера или скопировать для редактирования, обмена, архивации и тд. Поддерживается запись с автоматическим формированием фрагментов по времени и запись транскодированного потока , сразу в нескольких качествах. Просмотр VOD контента ( MP4 видеофайлов ) в сети Интернет непосредственно с Wowza по протоколу потоковой передачи видео (стриминг) имеет множество преимуществ по сравнению с просмотром с размещением файла на обычном веб сервере методам обычной загрузки и прогрессивной загрузки. Прежде всего это контроль за ресурсами сети, тк каждый пользователь в этом случае не может потреблять сетевых ресурсов больше, чем битрейт кодирования файла. Тем самым исключаются пики потребления сетевых ресурсов характерные для скачивания файлов с обычного веб сервера. Защищенность контент от несанкционированного скачивания намного выше , тк файл не скачивается на устройство просмотра целиком. Значительно повышается удобство просмотра пользователями, так VOD контент можно отдавать в виде мультибитрейт потока (ABR). В этом случае проигрыватель или устройство просмотра автоматически выбирает правильный битрейт для воспроизведения в соответствии с текущими условиями подключения к сети. Также Wowza позволит, при необходимости, добавлять субтитры и несколько языковых дорожек с переводом . Имеется поддержка работы с сетевым диском S3, Azure и тд.

Защита поток от несанкционированного просмотра

Во многих случаях медиаконтент сайта должен быть доступен для просмотра только для авторизованных пользователей. Доступ к медиаконтенту осуществляется по ссылке на ресурс под управлением Wowza Streaming Engine и простое копирование данной ссылки, как минимум, не должно приводить к просмотру live потока или vod видеофайла любым желающим. Wowza предоставляет несколько способов защиты контента, а именно:

  • Referer validate – простой метод ограничения возможности просмотра потока, только в плеере расположенном на странице сайта с разрешенным доменным именем.
  • SecureToken – более сложная методика основанная на генерации сессионных ключей просмотра ( токенов ). Для каждого запроса на просмотр формируется уникальная ссылка, с заданным временем жизни и ,иногда, с учетом IP пользователя. Формирование токена на стороне веб сервера должно осуществляться только для авторизованных пользователей сайта.
  • AES шифрование трафика - еще более сложная методика, требующая создание дополнительных программных компонентов (сервер обмена ключей), но и обеспечивающая разграничение прав пользователя на доступ к тому или иному потоку на уровне Wowza сервера и сквозное шифрование трафика надежным криптографическим алгоритмом.
  • DRM – самый надежный метод, требующий использования услуг сторонних сервис провайдеров DRM систем. Позволяет размещать на сайте контент созданный киностудиями, требующими сертифицированную систему защиты.

Узнать технические подробности реализации того или иного метода защиты контента вы сможете в нашей статье.

Масштабирование нагрузки и резервирование.

Лицензия Wowza Streaming Engine не имеет ограничений на количество потоков и пользователей, просматривающих поток. Максимальное количество зрителей определяется аппаратными ресурсами сервера, разрешением/битрейтом кодирования потока и ,прежде всего, пропускной способностью сети (сетевая карта сервера и порт подключения к Интернет). Так как почти всегда вещание в Интернет осуществляется по принципу unicast , количество зрителей поддерживаемое сервером можно рассчитать по простой формуле:

Битрейт потока * максимальное количество зрителей одновременно < 80% пропускной способности сети (меньшее из значений сетевая карта или порт Интернет).

Значения битрейта для типовых разрешений потоков:

Разрешение потока Битрейт потока
8K 21 – 50 Mbps
4K 13 – 34 Mbps
1080p 3 – 6 Mbps
720p 1.5 – 4 Mbps
420p 0.5 – 2 Mbps
360p 0.4 – 1 Mbps

Если стоит задача построения масштабируемой системы, которая рассчитана на огромное количество одновременных просмотров, то возможные два подхода : создать собственную инфраструктуру потокового вещания или использовать сторонние сервисы доставки контента - CDN ( включая социальные сети YouTube , VK и тд в качестве CDN):

Составной частью Wowza Streaming Engine является специальный модуль - Wowza Dynamic Load Balancing AddOn, который позволяет создать собственную инфраструктуру доставки контента – фактически приватную CDN сеть. Рассмотрим именно создание собственной инфраструктуры, чтобы понять, как могут работать несколько серверов Wowza в качестве единого решения.

На рисунке выше отображена общая схема работы системы при балансировке нагрузки. Группы абонентских устройств имеют условное деление и жестко не привязаны по их типу к определенному серверу. Первоначально запрос на получение потока направляется на Edge с Wowza Dynamic Load Balancing AddOn независимо от того, где находится потребитель контента, и какое у него устройство просмотра. Wowza Dynamic Load Balancing AddOn принимает запрос, анализирует и определяет через какой именно Edge сервер пользователь будет получать поток для просмотра. Благодаря такому подходу система может горизонтально масштабироваться простым добавлением Edge серверов. Дополнительно обеспечивается резервирование системы – в случае выхода из строя одного из Edge серверов все пользователи перенаправляются на другие. Более подробно о Wowza Dynamic Load Balancing AddOn вы можете узнать здесь.