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

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

Назад к другим способам организации платного доступа


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, у вас есть следующий URL живой трансляции:
http://video.wmspanel.com:8081/vod/sample.mp4/playlist.m3u8
Изменённый URL будет иметь вид:
http://video.wmspanel.com:8081/vod/sample.mp4/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9NS80LzIwMTIgODozMzowNSBBTSZoYXNoX3ZhbHVlPXE3MjN6aEVmdGFUOUJoWjBQTmw1TVE9PSZ2YWxpZG1pbnV0ZXM9MjA2

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

Нажмите, чтобы увидеть пример кода.

Полный пример можно посмотреть в github репозитории WMSPanel и адаптировать его для вашего случая.

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

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

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

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

Top-menu-half

Группа WMSAuth

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

Правила WMSAuth

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

5_wowza_entities-half

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

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

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

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

Это всё!

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

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

Пример

Руководство параноика по Интернет-вещанию от Thomas Gires содержит очень полезные примеры использования оплаты за просмотр из реальной жизни для HLS ретрансляции с помощью лёгкого edge-сервера.

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

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

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

Посмотрите FAQ по инфраструктуре платного доступа и воспользуйтесь поиском по документации, там есть ответы на многие вопросы.