Flash Access: DRM для защищенного стриминга

Adobe Flash Access

Подробная техническая статья про возможности использования Adobe Flash Access 2.0 для организации защищенной доставки контента в режиме HTTP Dynamic Streaming (в отличие от RTMPE). В статье рассказаны все этапы защиты контента и особенности реализации этой схемы в проектах интеграции с видео платформой.

Содержание

  • Архитектура системы
  • Функциональные модули
  • Подготовка контента
  • Шифрование контента
  • Доставка контента
  • OSMF видео плеер

Описание Adobe Flash Access 2.0
Технология HTTP Dynamic Streaming разработана Adobe Systems и предназначена для обеспечения доставки контента конечному пользователя по протоколу HTTP с возможностью динамического переключения качества видео контента в зависимости от доступной полосы пропускания пользователя.

Особенности HTTP Dynamic Streaming доставки контента при использовании Adobe Flash Access 2.0:
• Предоставление лицензий конечным пользователям для воспроизведения контента.
• Доставка контента по протоколу HTTP – нет необходимости использовать другие протоколы передачи данных (например: RTMP, RTMPE).
• Гибкость управления контентом при воспроизведении. Для просмотра, нет необходимости выкачивать контент полностью. Контент кэшируется блоками на жестком диске, по мере воспроизведения.
• Шифрование контента для свободной передачи по открытым каналам связи (Интернет).
• Защиту контента при хранении на NFS. Контент всегда находится в зашифрованном состоянии, как при хранении на сервере, так и при воспроизведении. Контент расшифровывается для воспроизведения блоками в памяти.
• Поддержка Multi-bitrate – возможность «связанно» кодировать один контент с разным качеством, что позволяет быстро переключать качество контента при воспроизведении.
• Bandwidth – контроль полосы пропускания канала
• Обеспечивает защиту при выводе на внешние устройства для аналоговых (S-Video, Component Video) и цифровых портов (HDMI, DVI, UDI).
Перечисленные возможности удовлетворяют требования большинства крупных правообладателей, что позволяет обеспечить наличие широкого ассортимента на онлайн ресурсе.

Архитектура Adobe Flash Access 2.0
Решение по защите контента и его распространению на базе Adobe Flash Access предназначено в том числе и для использования в мультимедийных проектах использующих технологию Adobe HTTP Dynamic Streaming (рис.1).

Функциональная схема Flash Access Server for Protected Streaming
Рис. 1. Функциональная схема Flash Access Server for Protected Streaming

Предложенная схема идеально подходит для защищенной онлайн доставки видео контента.

Функциональные модули видео платформы
• Подготовка (File Packager for video on demand)
Подготовка контента включает этап кодирования и шифрования программой f4fpackager (поддерживаются форматы видео файлов: FLV (VP6/MP3) and F4V (H.264/AAC)).
Политиками применяемыми контенту при воспроизведении управляет сервер лицензий, поэтому рекомендуется шифровать контент, самой простой – анонимной политикой, только для защиты контента. Подробное описание в разделе: «Подготовка контента».
• Доставка контента
Результатом шифрования контента является создание 3 файлов:
f4f – шифрованный контент (фрагментированный). Каждый фрагмент включает всю необходимую информацию для воспроизведения контента.
f4m – файл манифест. Содержит: описание контента, описание DRM, URL сервера лицензий.
f4x – индексный файл. Включает описание фрагментов для быстрого нахождения нужного при воспроизведении.
В качестве кэширующего модуля может использоваться CDN, либо кеширующий фрагменты HTTP сервер nginx (или Varnish).
• Сервер лицензий
Сервер лицензий Flash Access Server for Protected Streaming обеспечивает выдачу лицензии конечным пользователям и управляет применяемыми к контенту политиками (подробное описание в разделе: «Конфигурирование»).
• Воспроизведение
Для воспроизведения тестового контента необходимо использовать свободно распространяемый плеер OSM. Подробное описание в разделе: «OSMF видео плеер».

Описание утилит и модулей
File Packager Tool (f4fpackager) — консольное приложение:
• Конвертирует контент в фрагментированный контент (f4f).
• Генерирует манифест (f4m).
• Применяет политику (файл применяемой политики указывается в параметрах).
Подробное описание в разделе: «Подготовка контента».

Для кодирования видео контента применяется симметричный алгоритм блочного шифрования (Advanced Encryption Standard) с размером блока 128 бит и ключом 128 бит, принятый в качестве стандарта шифрования, что обеспечивает высокий уровень безопасности хранения и доставки контента в сетях CDN.

HTTP Origin Module for Apache – управляет запросами на получение фрагментов контента. HTTP Origin Module for Apache включен во все версии Flash Media Server 4, либо его можно скачать с сайта Adobe www.adobe.com/go/httpdynamicstreaming.
Подробное описание процесса доставки контента в разделе «Описание работы HTTP Origin Module»

Open Source Media Framework – надежный, гибкий ActionScript framework для быстрой разработки видео плеера для Flash-платформы. OSMF sample player — пример реализации плеера для работы с технологией HTTP Dynamic Streaming (рис.3)
Подробное описание плеера в разделе: «Разработка OSMF видео плеера».

OSMF sample player
Рис. 2 Внешний вид OSMF sample player
Подготовка контента
Для подготовки контента (для HTTP Streaming) и управлениям раздачей необходимо использовать приложение File Packager Tool. File Packager Tool обеспечивает:
• Фрагментирование (подготовку фрагментированного контента).
• Шифрование и ассоциация файла с политикой

Фрагментирование контента в ОС Windows
• Откройте консольное окно с командной строкой
• Перейдите в директорию с программой File Packager (f4fpackager.exe)
• Введите команду и параметры:

1
f4fpackager --input-file=sample.f4v --output-path=c:\sampleoutput

После кодирования получаем: sampleSeg1.f4f, sample.f4x, и sample.f4m.

Фрагментирование контента в ОС Linux
• Откройте терминальное окно
• Установите параметр LD_LIBRARY_PATH указав директорию с File Packager libraries
• В консоли введите команду и параметры:

1
f4fpackager --input-file=sample.f4v --output-path=/sampleoutput

После кодирования получаем: sampleSeg1.f4f, sample.f4x, и sample.f4m.

Фрагментирование контента в нескольких качествах
• Кодирование контента в нескольких качествах, например: 150 kbps, 700 kbps, и 1500 kbps
В примере используется 3 файла в разных качествах: sample1_150kbps.f4v, sample1_700kbps.f4v, и sample1_1500kbps.f4v. На Flash Media Server эти файлы находятся в директории rootinstall\applications\vod\media.
• Скопируйте эти файлы в директорию с File Packager (для Flash Media Interactive Server 4, программа File Packager располагается в директории – rootinstall\tools\f4fpackager)
• Откройте консольное окно с командной строкой
• Измените директорию на rootinstall\tools\f4fpackager
• Введите следующую команду с параметрами:

1
f4fpackager --input-file=sample1_150kbps.f4v --bitrate=150

После кодирования получаем: sample1_150kbpsSeg1.f4f, sample1_150kbps.f4x, и sample1_150kbps.f4m.
• Повторите кодирование для второго файла:

1
f4fpackager --input-file=sample1_700kbps.f4v --manifest-file=sample1_150kbps.f4m --bitrate=700

После кодирования получаем: sample1_700kbpsSeg1.f4f, sample1_700kbps.f4x, и sample1_700kbps.f4m. Файл манифеста sample1_700kbps.f4m помимо информации о текущем кодировании (sample1_700kbps.f4m) так же содержит информацию о первом кодировании (sample1_150kbps.f4m).
• Повторите кодирование для третьего файла:

1
f4fpackager --input-file=sample1_1500kbps.f4v --manifest-file=sample1_700kbps.f4m --bitrate=1500

После кодирования получаем:
sample1_1500kbpsSeg1.f4f, sample1_1500kbps.f4x и sample1_1500kbps.f4m. Файл манифеста sample1_1500kbps.f4m помимо информации о текущем кодировании содержит информацию о первом кодировании (sample1_150kbps.f4m), втором кодировании (sample1_700kbps.f4m). При кодировании с несколькими качествами информация из первого файла манифеста копируется в следующий файл манифеста, из второго в следующий и т.д.
• Для воспроизведения контента с multi-bitrate откройте плеер OSMF и в URL укажите путь к файлу sample1_1500kbps.f4m. Файл манифеста создан последним и включает информацию о все трех контентах с разным качеством.

Шифрование контента
Программа File Packager предназначена не только для фрагментирования контента, но и предоставляет возможность его шифрования. Для работы с большим количеством параметров удобно использовать конфигурационный файл, для этого:
• Найдите конфигурационный файл f4fpackager_config.xml. По умолчанию f4fpackager_config.xml находится в той же директории где и программа File Packager. Переименуйте его для удобства использования. Откройте в текстовом редакторе.
• Введите значения для следующих параметров:

1
2
3
someFile.f4v
contentId
commonKey.bin

http://server1.com:9999 licenseServer.der transportCert.der packagerCredential.pfx mYpwd policyFile.pol
Вы можете изменить значения и добавить необходимые параметры.
• Сохраните конфигурационный файл.
• Откройте консольное окно с командной строкой.
• Выполните команду.

1
f4fpackager --conf-file=f4fpackager_config.xml

Описание параметров:
• input-file – наименование файла для кодирования
• content-id – идентификатор контента.
• common-key – уникальный 128 битный ключ (создан утилитой OpenSSL).
• license-server-url — URL сервера лицензий Flash Access for Protected Streaming. Предоставляет лицензии конечному пользователю.
• license-server-cert – кодированный сертификат сервера лицензий. Получен в результате лицензирования у Adobe. Не меняется.
• transport-cert – кодированный транспортный сертификат (.DER). Получен в результате лицензирования у Adobe. Не меняется.
• packager-credential – мандат на кодирование контента (.pfx). Получен в результате лицензирования у Adobe. Не меняется.
• credential-pwd – пароль. Получен в результате лицензирования у Adobe. Не меняется.
• policy-file — политики (.pol). Файл политики может быть создан с использованием java API или с помощью утилиты из комплекта Flash Access — AdobePolicyManager.jar.
Подробное описание программы File Packager и ее параметров здесь.
Подробное описание процесса создания политик в официальной документации Adobe.

Описание файлов шифрованного контента
Файл манифест (.F4M) включает в себя:
• битрейт
• метаданные
• DRM
Подробное описание в здесь.

Пример файла манифеста для воспроизведения контента.

1
2
3
4
5
6
7
<!--?xml version=”1.0” encoding=”utf-8”?-->

myvideo
253
video/x-flv
recorded
http://example.com”

Пример файла манифеста для проигрывания контента с мультибитрейт:

1
2
3
4
5
6
7
<!--?xml version=”1.0” encoding=”utf-8”?-->

myvideo
253
video/x-flv
recorded
http://example.com”

Файл контента (.F4F) содержит фрагменты шифрованного контента.
Подробное описание в здесь.

Доставка контента
Задачу доставки контента решают два основных модуля:
• HTTP Origin Module – Adobe плагин для Apache, позволяющий получать фрагменты зашифрованного видео контента.
• HTTP Cache Module – любой кеширующий HTTP веб сервер.
Использование протокола HTTP позволяет использовать широкий спектр популярных средств распределения нагрузки, кеширования и эффективной доставки контента, которые используются для стандартного веб контента.

Сравнение методов доставки
Сравнительная таблица методов доставки контента и их параметры. Преимущества HTTP Dynamic Streaming. Подробное описание в здесь.

Одним из наиболее интересных преимуществ HTTP Dynamic Streaming является возможность пользователя с очень медленным Интернет каналом поставить на паузу воспроизведение и дождаться полной загрузки видео контента. Это позволяет пользователям даже с плохим Интернетом смотреть видео в высоком качестве без прерываний.

Описание работы HTTP Origin Module
Для воспроизведения контента в плеере OSMF необходимо указать URL файла манифеста (.F4M)
1. Клиент отправляет HTTP запрос на web-сервер, например:
http://www.example.com/media/http_dynamic_Streaming.f4m
2. Web-сервер Apache передает запрос на HTTP Origin Module.
3. HTTP Origin Module возвращает файл манифеста (.F4M) клиенту.
4. Клиент получает файл манифеста (.F4M) и использует информацию из сегмента bootstrap, чтобы перевести время кодирования в формат segment#/fragment#
5. Клиент отправляет второй HTTP запрос на web-сервер Apache и запрашивает определенный фрагмент из контента (.F4F), например:
http://www.example.com/media/http_dynamic_StreamingSeg1-Frag1
6. Web-сервер Apache получает запрос и передает его на HTTP Origin Module.
7. HTTP Origin Module используя индексный файл (F4X) определяет смещение (в байтах) в файле (.F4F) и отправляет соответствующие Segment1 и Fragment клиенту, например: http://www.example.com/media/http_dynamic_StreamingSeg1.f4f.
Структура фрагментированного контента (.f4f) представлена на рис. 3.
8. Клиент получает фрагмент и проигрывает его.

структура фрагментированного flash видео
Рис. 3 Структура фрагментированного контента (F4F)
Пример доставки фрагментированного контента
Т.к. контент пользователю доставляется по протоколу HTTP, отладку процесса доставки можно проводить используя Firefox с плагином FireBug.

http ds firebug
Рис. 4 Пример HTTP DS передачи контента в FireBug
Настройка и конфигурирование FMS для HTTP Dynamic Streaming
Для создания HTTP Dynamic Streaming приложения необходимо:
1. Установить Flash Media Interactive Server 4 или выше. Данная версия Flash Media Server включает все необходимые пакеты, включая Web-сервер Apache и HTTP Origin Module.
Описание настройки Flash Media Interactive Server 4 приводится в документе: «httpdynamicstreaming_wp_ue.pdf»
Подготовить кодированный контент (подробное описание в разделе: «Подготовка контента») и скопировать его в директорию:
• On Windows, C:\Program Files\Adobe\Flash Media Server 4\webroot\vod.
• On Linux, /opt/adobe/fms/webroot/vod.
2. Установить плеер OSMF:
Скопировать плеер OSMF (включая директории: \scripts, \images, and \assets) в корневую директорию (C:\Program Files\Adobe\Flash Media Server 4\webroot).
Примечание: если в директории webroot уже есть директория «images», скопируйте файлы из директории \images плеера OSMF в директорию the webroot\images.
Подробное описание в разделе: «Разработка плеера».
4. Откройте web-браузер и введите адрес плеера OSMF:
По умолчанию http://localhost/OSMFPlayer.html.
Примечание: Плеер OSMF требует установки Flash Player 10.1 и выше.
5. Нажмите кнопку «Eject» и введите адрес: http://localhost/vod/sample1_1500kbps.f4m.
Начнется воспроизведение контента.

Для переключения между потоками с разным качеством (multi-bitrate streaming) нажмите кнопку «Q». Нажатие кнопок: Q- и Q+ меняет качество проигрываемого контента.

Конфигурирование сервера лицензий
Политики применяемые к контенту при воспроизведении могут быть изменены сервером лицензий, поэтому вы можете шифровать контент, самой простой – анонимной политикой, для защиты контента (Flash Access Server for Protected Streaming игнорирует политику используемую при кодировании контента, за исключением требования аутентификации)
Параметры доступа к контенту и ограничения нужно определять на стороне сервера в конфигурационных файлах описанных ниже.
• flashaccess-global.xml — глобальный конфигурационный файл
• flashaccess-tenant.xml — конфигурационный файл владельца

Вы можете указывать в конфигурационном файле владельца flashaccess-tenant.xml как полный путь, так и относительно директории владельца
(LicenseServer.ConfigRoot/flashaccessserver/tenants/tenantname).

Конфигурационный файл владельца включает:
● Transport Credential — транспортный мандат (сертификат и секретный ключ). Предоставляется Adobe.
● License Server Credential — мандат сервера (сертификат и секретный ключ). Предоставляется Adobe.
● Custom Authorizers — необязателен. Пользовательский класс для обработки аутентификации при запросе лицензии.
● List of Authorized Packagers — необязателен.
● Usage Rules
● License Caching — необязателен. Определяет, как долго лицензия будет кэшироваться на устройстве пользователя. По умолчанию кэширование отключено. При включении кэширования необходимо: установить дату окончания кэширования или определить кол-во секунд кэширования лицензии.
Для отключения кэширования установите интервал кэширования — 0.
Примечание. Все лицензии выпущенные Flash Access Server for Protected Streaming актуальны не более чем на 24 часа (86400 сек.)
● Output Protection защиту при выводе на внешние устройства для аналоговых и цифровых портов.
● AIR and SWF Application Restrictions — необязателен. Определяет список SWF и AIR приложений, которым разрешен просмотр контента.
● DRM and Runtime Module Restrictions — определяет минимальный уровень безопасности. Необязателен. Включает список версий приложений, которым запрещено проигрывание контента.

Глобальный конфигурационный файл (Global Configuration File)
Наиболее важные настройки, такие как кэширование, логирование находятся в глобальном конфигурационном файле flashaccess-global.xml.
● — управление кэшированием

● refreshDelaySeconds — определяет как часто проходит обновление. Маленький интервал может негативно сказаться на производительности сервера.
● numTenants – кол-во владельцев на сервере.
● — определяет уровень логирования.

● level определяет уровень логирования. Значение «DEBUG» генерирует очень много сообщений в лог-файл. Adobe рекомендует устанавливать значение «WARN» для оптимальной производительности. Однако, есть риск потерять важную информацию, такую как аудит выдачи лицензий. Для минимального логирования установите значение «INFO».
● rollingFrequency — определяет как часто лог-файлы меняются. Можно установить значения: «MINUTELY», «HOURLY», «TWICE-DAILY», «DAILY», «WEEKLY», «MONTHLY», или «NEVER».

Политики сервера лицензий (Flash Access Server for Protected Streaming) применяемые при воспроизведении контента (параметры выставлены в Flash Access по умолчанию):
• анонимный доступ;
• срок действия лицензии 24 часа;
• лицензия не кэшируется на компьютер пользователя;
• игнорируются несколько лицензий;
• игнорируется ограничение на проигрывание контента;
• игнорируются пользовательские параметры;

Логирование
Лог-файлы создаются Flash Access Server for Protected Streaming и располагаются в директории определенной как LicenseServer.LogRoot.
Примечание: Если текущий лог-файл удален или перемещен во время запуска сервера, сервер не создает новый лог-файл и информация в будущем может быть потеряна.
Структура директорий:
• {LicenseServer.LogRoot}/flashaccess-global.log
• flashaccessserver/flashaccess-partition.log
• tenants/tenantname/flashaccess-tenant.log

Глобальный лог-файл (Global Log File)
Глобальный лог-файл flashaccess-global.log располагается в директории определенной как LicenseServer.LogRoot.
Этот лог-файл содержит сообщения от Flash Access SDK и сообщения генерируемые при инициализации сервера.

Partition Log File
Конфигурационный файл flashaccess-partition.log, располагается в директории LicenseServer.LogRoot/flashaccesserver.
Этот лог-файл включает сообщения о запросе лицензий.

Лог-файл владельца (Tenant Log File)
Конфигурационный файл flashaccess-tenant.log, располагается в LicenseServer.LogRoot/flashaccesserver/tenants/tenantname.
Этот лог-файл содержит информацию о каждой запрошенной лицензии.

Произвольная аутентификация
Конфигурация пользовательской аутентификации
Использование пользовательской аутентификации предполагает включение токена аутентификации (AuthenticationToken) в запрос лицензии:
• Flash Player запрашивает лицензию у сервера лицензий для воспроизведения контента. В запрос добавлен токен аутентификации
• Сервер лицензий (Flash Access Server for Protected Streaming) получает токен аутентификации
• Сервер лицензий отправляет запрос на обработку токена аутентификации внешнему сервису
• Сервер лицензий получает ответ от внешнего сервиса аутентификации
• Сервер лицензий готовит лицензию для отправки пользователю (Flash Player) либо нет

Для включения сервиса пользовательской аутентификации в Flash Access Server for Protected Streaming необходимо:
• Создать политику с типом аутентификации «Сustom» (политику можно создать с помощью Flash Access SDK)
• Создать шифрованный файл применив при шифровании политику с «Custom» аутентификацией (Подробное описание процедуры шифрования в разделе: «Шифрование контента»)
• Включить аутентификацию в конфигурационном файле flashaccess-tenant.xml (LicenseServer.ConfigRoot/flashaccessserver/tenants/tenantname), указав класс обработки, например: «SampleAuthorizer»

1
 

Подробнее здесь.
• Создать класс обработки аутентификации в среде разработки, например: «NetBeans IDE 6.9.1». (Подробное описание: «Реализация класса аутентификации для сервера лицензий Flash Access for Protected Streaming»
• Включить класс обработки в пакет, например: «auth.jar»
(LicenseServer.ConfigRoot/flashaccessserver/libs)
• Перезапустить сервер лицензий

Реализация класса пользовательской аутентификации
Для реализации пользовательского класса обработки аутентификации необходимо:
• Открыть среду разработки, например: «NetBeans IDE 6.9.1»
• Создать проект «HttpDSAuthorizer»
• Создать класс «SampleAuthorizer» в пакете «com.adobe.flashaccess.server.license.extension.auth»
• В класс «SampleAuthorizer» добавить код обработки, например:

1
package com.adobe.flashaccess.server.license.extension.auth;
1
2
3
4
5
import java.io.DataInputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.logging.Log;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class SampleAuthorizer implements IAuthorizer {
public SampleAuthorizer() {}
public void authorize(IMessageFacade message, IAuthRequestFacade request,
IAuthResponseFacade response, IAuthChain chain, Log log) throws Exception {
if(message.getAuthToken() != null){
System.out.println(new String(message.getAuthToken()));
URLConnection conn = null;
DataInputStream dis = null;
boolean authValid = false;
try {
conn = new URL("http://localhost/auth.jsp?" +
new String(message.getAuthToken())).openConnection();
conn.setDoOutput(true);
conn.setConnectTimeout(10000);
conn.setReadTimeout(10000);
dis = new DataInputStream(conn.getInputStream());
String inputLine = null;
while ((inputLine = dis.readLine()) != null)
if(inputLine.equalsIgnoreCase("auth=true")){authValid = true; break;}
} catch (IOException e) {
}finally{
if(dis != null) dis.close();
}
if(authValid){
chain.execute(message);
return;
}
}
throw new Exception("AuthToken error");
}
@Override
public IAuthorizer clone() {
return new SampleAuthorizer();
}
}

OSMF видео плеер

Для воспроизведения защищенного видео необходимо разработать совместимый с Adobe Flash Access 2.0 видео плеер, например на базе OSMF 1.5. Основные особенности разработки видео плеера рассмотрены далее.

OSMF based DRM player
Рис.5. Пример OSMF видео плеера для просмотра защищенного контента
При инициализации видео плеера создайте инстанс MediaPlayerSprite класса. Для mediaPlayer свойства установите обработчик событий DRMEvent.DRM_STATE_CHANGE. Т.е. при наступлении DRMEvent события будет вызван метод onDRMStateChangeHandler для его анализа:

1
2
3
4
5
6
7
private function initMediaPlayer (): void
{
_mediaPlayerSprite = new MediaPlayerSprite ();
_mediaPlayerSprite.mediaPlayer.addEventListener (DRMEvent.DRM_STATE_CHANGE,
onDRMStateChangeHandler)
addChild (_mediaPlayerSprite);
}

Метод addMedia исопльзуется для воспроизведения определенного видео. Метод создает инстанс класса URLResource, URL контента (например, http://server_url/content.f4m) передается в конструктор класса. Далее создаем объект MediaFactory и инстанс класса F4MElement, в конструктор которого передаем URLResource и инстанс F4MLoader:

1
2
3
4
5
6
7
8
private function addMedia (m_url: String): void
{
var _urlResource: URLResource = new URLResource (m_url);
var _factory: MediaFactory = new MediaFactory ();
var _f4mElement: F4MElement = new F4MElement (_urlResource, new
F4MLoader (_factory));
_mediaPlayerSprite.mediaPlayer.media = _f4mElement;
}

Метод onDRMStateChangeHandler вызывается при наступлении DRMEvent события в mediaPlayer. Этот метод проверяет все события данного типа и применяет определенные действия в некоторых случаях соответствия. Например, при наступлении DRMState.AUTHENTICATION_NEEDED события, обозначающего необходимость аутентификации, которую можно выполнить следующим образом:

1
_mediaPlayerSprite.mediaPlayer.authenticate ("test", "test");

Первый параметр — логин пользователя, второй параметр — пароль пользователя. Стоит отметить что логин пользователя и пароль могут иметь совершенно иные смысловые значения (например, идентификатор веб сессии).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
protected function onDRMStateChangeHandler (evt: DRMEvent): void
{
switch (evt.drmState) {
case DRMState.AUTHENTICATING:
break;
case DRMState.AUTHENTICATION_COMPLETE:
break;
case DRMState.AUTHENTICATION_ERROR:
break;
case DRMState.AUTHENTICATION_NEEDED:
_mediaPlayerSprite.mediaPlayer.authenticate ("test", "test");
break;
case DRMState.DRM_SYSTEM_UPDATING:
break;
case DRMState.UNINITIALIZED:
break;
}
}

Используя эти методы можно воспроизводить DRM контент в SWF видео плеерах.

В случае если вам нужно отправить токен для аутентификации, то вам стоит использовать новое API в классе DRMManager. Для этого используется метод

1
setAuthenticationToken (serverUrl: String , domain: String , token: ByteArray ): void

, который дает возможность передать любой токен из плеера на сервер лицензий.

Более подробная информация доступа в официальной документации: ActionScript 3.0 Reference класса DRMManager.