Контроль оплаты за просмотр для каждого пользователя

Wmsauth_flow_ppv-250w Wowza-pay-per-view-250w Paywall-structure-250w

Ознакомиться со всеми методами организации платного доступа или посмотреть эти методы применительно к Nimble Streamer.


Некоторые компании хотят контролировать собственные процессы вещания на уровне каждого пользователи и каждого потока в дополнение к основным методам, таким как защита от вставки прямых ссылок или блокировка определённых географических зон. Это особенно актуально для систем, в которых абоненты платят за каждый просмотр.

Что мы можем предложить?

WMSPanel и Nimble Streamer предоставляют платформу, которая позволяет собирать детализированную информацию обо всех соединениях и принимать решения о разрешении или запрете просмотра для каждого подключенного пользователя. Платформу можно использовать для организации логики оплаты за просмотр и поминутной оплаты, подсчитывая каждое параллельное подключение пользователя, статистику уникальных посещений и многое другое.

Алгоритм интеграции вышеописанных возможностей в рабочий процесс заказчика:

  1. Создаётся обработчик PPV API, который в состоянии принимать POST запросы.
  2. Устанавливаются параметры обработчика в консоли WMSPanel.
  3. Добавляется подпись PPV в существующие медиа-ссылки.
  4. Включается процесс подписи PPV через WMSPanel.
Если вы всё это выполните, то основной сценарий будет выглядеть следующим образом:
  • Агент WMSPanel на стороне Wowza сервера периодически отправляет запросы обработчику. Запрос содержит идентификаторы, IP-адреса, разницу во времени просмотра между запросами и названия медиа данных по каждому пользователю.
  • Обработчик клиента принимает необходимые решения основываясь на бизнес-логике компании и отправляет ответы агенту. В каждом ответе указывается, каким пользователям необходимо блокировать возможность просмотра медиа-данных.
  • Заблокированные пользователи немедленно отключаются от сервера, в то время как остальные пользователи продолжают просматривать медиа-данные.
Давайте пройдёмся шаг за шагом, чтобы применить это.

1. Создайте обработчик PPV

WMSPanel использует push API. Агент посылает запросы обработчику клиента. Этот обработчик должен быть доступен через HTTP/HTTPS и должен быть способен обрабатывть POST запросы. Эти запросы могут быть либо в JSON, либо XML формате, который можно задать в настройках WMSPanel.
Обработчику необходимо выполнять несколько вещей:

  • интерпретировать входящий запрос (например, декодировать JSON документ).
  • выполнить запрос к внутренней базе данных пользователей для получения обновлений расходов по каждому пользователю и принять решение о том, для кого можно сохранить доступ к медиа-данным (например, смотреть видео).
  • вернуть закодированный ответ, содержащий идентификаторы пользователей, которым должен быть заблокирован доступ к медиа-данным.
Обработчику необходимо возвращать список всех заблокированных идентификаторов пользователей при каждой синхронизации (запросе). Если какой-нибудь идентификатор будет исключён из этого списка, то для этого пользователя будет открыт доступ к медиа-данным.

Можете посмотреть пример простого обработчика на языке PHP. В примере просто берётся входящий запрос, фиксируется и возвращается несколько идентификаторов, которые должны быть заблокированы. Стоит также взглянуть на полный пример JSON запроса агента и на пример ответа обработчика.

2. Настройка API параметров для обработчика

Необхоимо настроить связь между агентом и обработчиком. Выберите пункт меню Control / API setup и откройте закладку Push API, которую мы собираемся сейчас использовать.
Ppv-handler-setup_tn

Определите следующие параметры:

  • Введите URL обработчика в поле PPV handler URL;
  • Установите галочку Enable pay per view;
  • Выберите формат запросов или оставьте "JSON" по умолчанию;
  • Введите интервал синхронизации или оставьте 30 секунд по умолчанию.
После того, как вы нажмёте Сохранить, первый запрос на синхронизацию будет отправлен вашему обработчику.

3. Генерация подписи PPV

Для того, чтобы агент начал посылать запросы обработчику необходимо внести некоторые изменения на стороне вашего веб-сервера. URL медиа-данных необходимо модифицировать, чтобы включить специальный хэш или подпись, которая будет содержать требуемую информацию.

Например, у вас есть следующий URL живой трансляции:
http://ec2-test-ip.compute.amazonaws.com:1935/live/Stream1/playlist.m3u8
Изменённый URL будет иметь вид:
http://ec2-test-ip.compute.amazonaws.com:1935/live/Stream1/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9NS80LzIwMTIgODozMzowNSBBTSZoYXNoX3ZhbHVlPXE3MjN6aEVmdGFUOUJoWjBQTmw1TVE9PSZ2YWxpZG1pbnV0ZXM9MjA2

Для генерации подписи необходимо изменить исходный код своей клиентской части, включив специальный фрагмент кода.

Нажмите здесь, чтобы посмотреть фрагмент кода.

Вы можете посмотреть все примеры в github репозитории WMSPanel и адаптировать их код себя.

Две важные вещи, которые должны быть обязательно указаны на этом шаге:

  • идентификатор пользователя (определяется клиентом);
  • ключ или пароль, который будет использоваться на следующем шаге.
Идентификатор — это любое текстовое значение, которое уникально в пределах инфраструктуры клиента. Код идентичен тому, что используется в системе защиты от вставки прямых ссылок, за исключением IP-адреса, который в данном случае заменяется идентификатором пользователя.

4. Настройка параметров подписи PPV

Чтобы определить параметры ограничений на стороне сервера, необходимо уведомить об этом агента. Настройка производится через меню Управление / WMSAuth paywall setup.

Top-menu-half

Группа WMSAuth

В WMSAuth любое ограничение может быть применено к группе серверов. Таким образом, первое, что необходимо сделать — это создать группу и добавить в неё один или несколько серверов Wowza. Детали приведены на скриншоте.
Groups-list-half
2_server_selection-half

Правила WMSAuth

Внутри группы может быть определено несколько правил, каждое из которых работает со своим набором сущностей Wowza. Нажмите "Добавить правило" чтобы попасть на страницу создания правила. На скриншоте ниже есть пример регулярных выражений, которые можно применить к vHost, приложению, экземпляру приложения или отдельному потоку Wowza.

5_wowza_entities-half

Установка пароля

Теперь необходимо указать ключ или пароль, который будет вставлен в подпись медиа-данных на стороне веб-сервера в секции "Генерация подписи PPV" выше.
После сохранения правила оно будет применено к серверу в течение нескольких секунд.
Hot-link-protection-half

Существуют ли доступные методы отладки?

Обработчик и интерфейс отладки позволяют получать данные от сервера и просматривать результаты в браузере. Используйте их, чтобы видеть, какие запросы поступают от серверов к вашему обработчику.

Это всё!

Теперь, когда вся система настроена, вы будете получать обновления о текущем состоянии вещания. В качестве ответа вы можете отправлять список заблокированных идентификаторов.

Что если сервис WMSPanel недоступен?

Агент Wowza будет посылать запросы и получать ответы на них от платформы pay-per-view независимо от доступности WMSPanel. Если ваш сервер по каким-либо причинам не сможет соединиться с сервисом WMSPanel, всё равно эта функциональность будет отлично работать. Панель управления не используется после того, как завершена настройка обработчика.

Прочие проблемы и вопросы

Посмотрите FAQ по инфраструктуре платного доступа. Также рекомендуем форум компании WMSPanel, где есть дополнительная информация о применении Nimble Streamer от других пользователей и компаний.

Используйте с другими продуктами

В дополнение к текущему разделу будет полезно ознакомиться с Руководством параноика по интернет-вещанию Томаса Гирса, чтобы посмотреть примеры реального использования функционала оплаты за просмотр в Nimble Streamer для ретрансляции HLS с помощью легковесного edge-сервера. Nimble Streamer и Wowza могут работать в единой эффективной инфраструктуре, использующей MPEG-DASH, HLS, SmoothStreaming и progressive download (псевдо-стриминг), а также живое вещание по RTMP, RTSP и MPEG-TS.

Также можно настроить эту функциональность для работы с ограничением для определённых географических зон, диапазонов IP-адресов и ограничением количества подключений и пропускной способности.

Платформа оплаты за просмотр также доступна в Nimble Streamer.
Nimble Streamer — это лёгкий бесплатный медиа сервер для RTMP, HLS, MPEG-DASH и других протоколов. Его можно использовать как эффективный edge- или origin-сервер для живого или VOD вещания.
Прочтите эту инструкцию, чтобы узнать как это сделать.