Базовые принципы работы 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 предоставляет несколько способов защиты контента, а именно:

  • Referervalidate – простой метод ограничения возможности просмотра потока только в плеере, расположенном на странице сайта с разрешенным доменным именем.
  • 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 вы можете узнать здесь.