PlayReady DRM

В данной статье описано, как добавить мультимедийное содержимое, защищенное PlayReady, в приложение универсальной платформы Windows (UWP).

PlayReady DRM позволяет разработчикам создавать приложения UWP, способные предоставлять пользователю содержимое PlayReady, и при этом применять правила доступа, заданные поставщиком содержимого. В данном разделе описаны изменения, внесенные в Microsoft PlayReady DRM для Windows 10. Кроме того, рассказывается, как изменить приложение UWP, защищенное PlayReady, чтобы оно поддерживало изменения, появившиеся в Windows 10, которых не было в Windows 8.1.

Раздел Описание
Аппаратное управление цифровыми правами (DRM) В данной статье рассказывается, как добавить аппаратное управление цифровыми правами (DRM) PlayReady в приложение UWP.
Адаптивная потоковая передача с защитой PlayReady В этой статье описывается, как добавить возможности адаптивной потоковой передачи мультимедийного содержимого с защитой Microsoft PlayReady в приложение универсальной платформы Windows (UWP). В настоящее время эта функция поддерживает воспроизведение содержимого Http Live Streaming (HLS) и Dynamic Adaptive Streaming over HTTP (DASH).

Новые возможности PlayReady DRM

В следующем списке описаны новые функции и изменения, внесенные в PlayReady DRM для Windows 10.

  • Добавлено аппаратное управление цифровыми правами (HWDRM).

    Поддержка аппаратной защиты содержимого обеспечивает безопасное воспроизведение содержимого высокого (HD) и сверхвысокого (UHD) разрешений на нескольких платформах устройств. Материал ключей (включая закрытые ключи, ключи содержимого и любой другой материал ключей, используемый для наследования или разблокировки указанных выше ключей), а также расшифрованные сжатые и несжатые примеры видео защищены с помощью аппаратной системы безопасности. При использовании аппаратного управления цифровыми правами ни одно неизвестное средство включения ("воспроизвести неизвестное" и "воспроизвести неизвестное с уменьшенным разрешением") не имеет значения, так как у конвейера аппаратного управления цифровыми правами всегда имеются сведения о том, какие выходные данные используются. Дополнительную информацию см. в статье Аппаратное управление цифровыми правами.

  • PlayReady больше не является компонентом платформы appX. Теперь он является встроенным компонентом операционной системы. Пространство имен было изменено с Microsoft.Media.PlayReadyClient на Windows.Media.Protection.PlayReady.

  • Следующие заголовки, определяющие коды ошибок PlayReady, теперь входят в пакет средств разработки программного обеспечения для Windows: Windows.Media.Protection.PlayReadyErrors.h и Windows.Media.Protection.PlayReadyResults.h.

  • Обеспечивает заблаговременное получение несохраняемых лицензий.

    Предыдущие версии пакета PlayReady DRM не поддерживали заблаговременное получение несохраняемых лицензий. Такая возможность была добавлена в эту версию. Это может уменьшить время, затрачиваемое до отображения первого кадра. Дополнительную информацию см. в статье Заблаговременное получение несохраняемой лицензии перед воспроизведением.

  • Обеспечивает получение нескольких лицензий в одном сообщении.

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

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

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

  • Добавлены цепочки несохраняемых лицензий.

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

  • Добавлена поддержка HDCP типа 1 (версия 2.2 в Windows 10).

    Дополнительную информацию см. в разделе Моменты, которые следует принять во внимание.

  • Miracast теперь носит характер неявных выходных данных.

  • Добавлена безопасная остановка.

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

  • Добавлено разделение лицензирования звука и видео.

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

  • Добавлена функция MaxResDecode.

    Эта функция была добавлена для ограничения воспроизведения содержимого до максимального разрешения, даже при наличия ключа с большими возможностями (но не лицензии). Она используется в тех случаях, когда потоки различных размеров кодируются с использованием одного ключа.

Следующие новые интерфейсы, классы и перечисления были добавлены в пакет PlayReady DRM:

Создан новый пример для демонстрации того, как использовать новые компоненты пакета PlayReady DRM. Пример можно скачать в браузере примеров кода.

Полезная информация

  • PlayReady DRM теперь поддерживает HDCP типа 1 (поддерживается в HDCP версии 2.1 или более поздней). Лицензии PlayReady содержат политику ограничения типа HDCP, которую должно применить устройство. В Windows 10 эта политика требует использования HDCP 2.2 или более поздней версии. Эту функцию можно включить в лицензии PlayReady Server v3.0 SDK (сервер управляет этой политикой в лицензии, используя GUID ограничения типа HDCP). Дополнительные сведения см. в статье Правила обеспечения совместимости и надежности для PlayReady.
  • Видео в формате Windows Media (также называемом VC-1) не поддерживается аппаратным управлением цифровыми правами DRM (см. статью Переопределение аппаратного управления цифровыми правами).
  • Теперь пакет PlayReady DRM поддерживает стандарт сжатия видео High Efficiency Video Coding (HEVC /H.265). Чтобы поддерживать стандарт HEVC, ваше приложение должно использовать содержимое Common Encryption Scheme (CENC) версии 2, которое включает функцию оставления заголовков фрагментов содержимого в очистителе. Дополнительные сведения см. в статье ISO/IEC 23001-7 Информационные технологии— технологии систем MPEG. Часть 7. Общее шифрование в файлах формата файлов базовых носителей ISO (требуется версия спецификации ISO/IEC 23001-7:2015 или более поздняя). Для всего содержимого с аппаратным управлением цифровыми правами корпорация Microsoft рекомендует использовать CENC версии 2. Кроме того, некоторые аппаратные системы управления цифровыми правами поддерживают стандарт HEVC, а другие — нет (см. статью Переопределение аппаратного управления цифровыми правами).
  • Чтобы использовать ряд новых функций PlayReady 3.0 (включая, помимо прочего, SL3000 для аппаратных клиентов, получение нескольких несохраняемых лицензий в одном сообщении на получении лицензий и временные ограничения для несохраняемых лицензий), сервер PlayReady должен иметь версию Microsoft PlayReady Server Software Development Kit v3.0.2769 Release или более позднюю.
  • В зависимости от политики защиты выходных данных, указанной в лицензии на содержимое, воспроизведение мультимедиа может не работать для конечных пользователей, если их подключенные выходные устройства не поддерживают указанные выше требования. В таблице ниже перечислен набор возникающих в результате этого стандартных ошибок. Дополнительные сведения см. в статье Правила обеспечения совместимости и надежности для PlayReady.
Ошибка Значение Описание
ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP 0xC0262513 Содержащаяся в лицензии политика защиты выходных данных требует от монитора использовать стандарт HDCP, но при этом не удалось использовать этот стандарт.
MF_E_POLICY_UNSUPPORTED 0xC00D7159 Содержащаяся в лицензии политика защиты выходных данных требует от монитора использовать стандарт HDCP Type 1, но при этом не удалось использовать этот стандарт.
DRM_E_TEE_OUTPUT_PROTECTION_REQUIREMENTS_NOT_MET 0x8004CD22 Ошибка с этим кодом возникает только при использовании аппаратного управления цифровыми правами. Содержащаяся в лицензии политика защиты выходных данных требует от монитора использовать стандарт HDCP или уменьшить фактическое разрешение содержимого, но при этом не удалось ни использовать этот стандарт, ни уменьшить фактическое разрешение содержимого, так как аппаратное управление цифровыми правами не поддерживает функцию уменьшения разрешения содержимого. При использовании программного управления цифровыми правами содержимое воспроизводится. См. статью Рекомендации по использованию аппаратного управления цифровыми правами.
ERROR_GRAPHICS_OPM_NOT_SUPPORTED 0xc0262500 Графический драйвер не поддерживает защиту выходных данных. Например, монитор подключен через разъем VGA или не установлен соответствующий графический драйвер для цифрового выхода. В последнем случае обычно устанавливается базовый видеоадаптер (Майкрософт), а для решения проблемы необходимо установить соответствующий графический драйвер.

Защита выходных данных

В следующем разделе описывается поведение при использовании PlayReady DRM для Windows 10 с политиками защиты выходных данных в лицензии PlayReady.

PlayReady DRM поддерживает уровни защиты выходных данных, содержащихся в спецификации расширяемых прав мультимедиа Microsoft PlayReady. Этот документ можно найти в пакете документов, который предоставляется с лицензированными продуктами PlayReady.

Примечание

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

PlayReady DRM позволяет воспроизводить содержимое с политиками защиты выходных данных только на выходных соединителях, как указано в правилах соответствия требованиям PlayReady. Дополнительные сведения об условиях выходных соединителей, указанных в правилах соответствия требованиям PlayReady, см. в разделе Заданные условия для правил обеспечения совместимости и надежности PlayReady.

Этот раздел посвящен сценариям защиты выходных данных с помощью PlayReady DRM для Windows 10 и аппаратного PlayReady DRM для Windows 10, которое также доступно на некоторых клиентах Windows. При использовании PlayReady HWDRM любая защита выходных данных применяется в реализации Windows TEE (см. Аппаратное управление цифровыми правами (DRM)). В результате иногда поведение отличается при использовании программного управления правами PlayReady (SWDRM).

  • Поддержка уровня защиты выходных данных (OPL) для несжатого цифрового видео 270: PlayReady HWDRM для Windows 10 не поддерживает ухудшения разрешения и требует применения HDCP. Рекомендуется, чтобы содержимое высокого разрешения для HWDRM имело значение показателя OPL более 270 (хотя это и необязательно). Кроме того, вам необходимо задать ограничение типа HDCP в лицензии (HDCP версии 2.2 или более поздней).
  • В отличие от программного управления цифровыми правами (SWDRM) при использовании HWDRM защита выходных данных применяется на всех мониторах, при этом учитываются характеристики монитора с самыми худшими возможностями. Например, если у пользователя подключено два монитора, один из которых поддерживает стандарт HDCP, а другой — нет, и при этом лицензия требует наличия стандарта HDCP, то не удастся воспроизвести содержимое, даже если предполагается воспроизводить его только на мониторе, поддерживающем этот стандарт. При использовании SWDRM можно воспроизводить содержимое при условии, что оно будет отображаться только на мониторе, поддерживающем стандарт HDCP.
  • Чтобы аппаратное управление цифровыми правами (HWDRM) гарантированно использовалось в клиенте и обеспечивало защиту, должны быть выполнены указанные ниже условия для ключей содержимого и лицензий.
    • Лицензия, используемая для ключа содержимого видео, должна иметь уровень безопасности как минимум 3000.
    • Аудиоданные необходимо шифровать ключом, отличным от ключа для видеоданных, а лицензия, используемая для аудиоданных, должна иметь уровень безопасности, равный как минимум 2000. Также звук можно оставить незашифрованным.
  • Все сценарии SWDRM требуют использования минимального уровня безопасности лицензии PlayReady для ключа аудио- и видеосодержимого, который не больше 2000.

Уровни защиты выходных данных

В следующей таблице приведены сопоставления между различными уровнями OPL в лицензии PlayReady и способами их применения в PlayReady DRM для Windows 10.

Видео

OPL Сжатое цифровое видео Несжатое цифровое видео Аналоговое ТВ
Любой HDMI, DVI, DisplayPort, MHL Компонентный, композитный
100 Н/Д* Передает содержимое Передает содержимое
150 Н/Д* Передает содержимое, если используется CGMS-A CopyNever или не удается использовать CGMS-A
200 Передает содержимое, если используется CGMS-A CopyNever
250 Пытается включить HDCP, но передает содержимое независимо от результата Н/Д*
270 SWDRM: пытается включить HDCP. Если не удается включить HDCP, компьютер ограничит эффективное разрешение до 520 000 пикселей на кадр и передаст содержимое HWDRM: передает содержимое с помощью HDCP. Если не удается включить HDCP, воспроизведение через порты HDMI и DVI запрещено
300

**Если ограничение типа HDCP не определено:** Передает содержимое с помощью HDCP. Если не удается включить HDCP, воспроизведение через порты HDMI и DVI запрещено.

**При определении ограничения типа HDCP**: передает содержимое с HDCP 2.2 и типом потока содержимого, равным 1. Если не удается включить HDCP или задать тип потока содержимого 1, воспроизведение через порты HDMI и DVI запрещено.

400 Windows 10 никогда не передает сжатое цифровое видеосодержимое на выходы независимо от последующего значения OPL. Дополнительные сведения о сжатом цифровом видео см. в разделе Правила соответствия требованиям для продуктов PlayReady. Н/Д*
500

* Сервер лицензирования может задать не все значения для уровней защиты выходных данных. Дополнительные сведения см. в правилах соответствия PlayReady.

звук;

OPL Сжатое цифровое аудио Несжатое цифровое аудио Аналоговое или USB-аудио
HDMI, DisplayPort, MHL HDMI, DisplayPort, MHL Любой
100 Передает содержимое Передает содержимое Передает содержимое
150 НЕ передает содержимое
200
250 Передает содержимое, если HDCP включен для HDMI, DisplayPort либо MHL или если включен SCMS и задан режим CopyNever
300 Передает содержимое, если HDCP включен для HDMI, DisplayPort или MHL

Miracast

PlayReady DRM позволяет воспроизводить содержимое через выход Miracast, если используется HDCP 2.0 или более поздней версии. Однако в Windows 10 Miracast считается цифровым выходом. Подробнее о сценариях Miracast см. в разделе Правила обеспечения совместимости PlayReady. В следующей таблице приведены сопоставления между различными уровнями OPL в лицензии PlayReady и способы их применения для выходов Miracast.

OPL Сжатое цифровое аудио Несжатое цифровое аудио Сжатое цифровое видео Несжатое цифровое видео
100 Передает содержимое, если используется HDCP 2.0 или более поздней версии. Если не удается включить HDCP, содержимое НЕ передается Передает содержимое, если используется HDCP 2.0 или более поздней версии. Если не удается включить HDCP, содержимое НЕ передается Н/Д* Передает содержимое, если используется HDCP 2.0 или более поздней версии. Если не удается включить HDCP, содержимое НЕ передается
150 НЕ передает содержимое Н/Д*
200
250 Передает содержимое, если используется HDCP 2.0 или более поздней версии. Если не удается включить HDCP, содержимое НЕ передается
270 Н/Д*
300 Передает содержимое, если используется HDCP 2.0 или более поздней версии. Если не удается включить HDCP, содержимое НЕ передается НЕ передает содержимое

**Если ограничение типа HDCP не определено:** Передает содержимое при включении HDCP 2.0 или более поздней версии. Если не удается включить HDCP, содержимое НЕ передается.

**Если определено ограничение типа HDCP:** Передает содержимое с HDCP 2.2 и типом потока контента, равным 1. Если не удается включить HDCP или задать тип потока содержимого 1, содержимое НЕ передается.

400 Н/Д* Windows 10 никогда не передает сжатое цифровое видеосодержимое на выходы независимо от последующего значения OPL. Дополнительные сведения о сжатом цифровом видео см. в разделе Правила соответствия требованиям для продуктов PlayReady. Н/Д*
500

* Сервер лицензирования может задать не все значения для уровней защиты выходных данных. Дополнительные сведения см. в правилах соответствия PlayReady.

Дополнительные явные ограничения вывода

В следующей таблице описывается реализация явных ограничений защиты вывода цифрового видео в PlayReady DRM для Windows 10.

Сценарий GUID Если... То...
Максимальное размер декодирования эффективного разрешения 9645E831-E01D-4FFF-8342-0A720E3E028F Подключенный выход: выход цифрового видео, Miracast, HDMI, DVI и т. д.

Передает содержимое со следующими ограничениями:

  • (а) ширина кадра должна быть меньше или равна максимальной ширине кадра в пикселях, а высота кадра — меньше или равна максимальной высоте кадра в пикселях;
  • (б) высота кадра должна быть меньше или равна максимальной ширине кадра в пикселях, а ширина кадра — меньше или равна максимальной высоте кадра в пикселях.
Ограничение типа HDCP ABB2C6F1-E663-4625-A945-972D17B231E7 Подключенный выход: выход цифрового видео, Miracast, HDMI, DVI и т. д. Передает содержимое с использованием HDCP 2.2 и типа 1 потока содержимого. Если не удается включить HDCP 2.2 или задать тип потока содержимого 1, содержимое НЕ передается. Также необходимо указать уровень защиты несжатого цифрового видео не меньше 271

В следующей таблице описывается реализация явных ограничений защиты вывода аналогового видео в PlayReady DRM для Windows 10.

Сценарий GUID Если... То...
Аналоговый компьютерный монитор D783A191-E083-4BAF-B2DA-E69F910B3772 Подключенный выход: VGA, DVI–analog и т. д. SWDRM: компьютер ограничивает эффективное разрешение до 520 000 пикселей на кадр и передает содержимое HWDRM: НЕ передает содержимое
Аналоговый компонентный выход 811C5110-46C8-4C6E-8163-C0482A15D47E Подключенный выход: компонентный SWDRM: компьютер ограничивает эффективное разрешение до 520 000 пикселей на кадр и передает содержимое HWDRM: НЕ передает содержимое
Аналоговые ТВ-выходы 2098DE8D-7DDD-4BAB-96C6-32EBB6FABEA3 Уровень OPL аналогового ТВ менее 151 Необходимо использовать CGMS-A
225CD36F-F132-49EF-BA8C-C91EA28E4369 OPL аналогового ТВ меньше 101, и лицензия не содержит 2098DE8D-7DDD-4BAB-96C6-32EBB6FABEA3 Необходимо попытаться использовать CGMS-A, но содержимое может воспроизводиться независимо от результата
Автоматическое управление усилением и цветовая полоса C3FD11C6-F8B7-4D20-B008-1DB17D61F2DA Передача содержимого с разрешением меньше или равным 520 000 пикселям на аналоговый ТВ-выход Устанавливает AGC только для компонентного видео и режима PAL, если разрешение меньше 520 000 пикселей, и устанавливает AGC и задает данные цветовой полосы для NTSC, если разрешение меньше 520 000 пикселей, согласно таблице 3.5.7.3. в правилах соответствия требованиям
Только цифровой выход 760AE755-682A-41E0-B1B3-DCDF836A7306 Подключен аналоговый выход Не передает содержимое

Примечание

При использовании внешнего модуля адаптера, например "Mini DisplayPort-VGA" для воспроизведения Windows 10 рассматривает выход как выход цифрового видео и не может применять политики для аналогового видео.

В следующей таблице описывается реализация PlayReady DRM для Windows 10, которая допускает воспроизведение в других обстоятельствах.

Сценарий GUID Если... То...
Неизвестный выход 786627D8-C2A6-44BE-8F88-08AE255B01A7 Если не удается определить выход или OPM с графическим драйвером SWDRM: передает содержимое HWDRM: НЕ передает содержимое
Неизвестный выход с ограничением B621D91F-EDCC-4035-8D4B-DC71760D43E9 Если не удается определить выход или OPM с графическим драйвером SWDRM: компьютер ограничивает эффективное разрешение до 520 000 пикселей на кадр и передает содержимое HWDRM: НЕ передает содержимое

Предварительные требования

Прежде чем приступить к созданию приложения UWP, защищенного PlayReady, в вашей системе необходимо установить указанное ниже программное обеспечение.

  • Windows 10.
  • Если вы компилируете какие-либо примеры для пакета PlayReady DRM для приложений UWP, необходимо использовать Microsoft Visual Studio 2015 или более поздней версии. Microsoft Visual Studio 2013 можно использовать для компиляции любых примеров из пакета PlayReady DRM для приложений Магазина Windows 8.1.

Руководство по миграции приложения UWP на работу с PlayReady

В данном разделе содержатся сведения о том, как выполнить миграцию существующих приложений PlayReady для Магазина Windows 8.x в Windows 10.

Пространство имен для приложений UWP PlayReady в Windows 10 было изменено с Microsoft.Media.PlayReadyClient на Windows.Media.Protection.PlayReady. Это означает, что вам необходимо выполнить поиск и заменить в коде старое пространство имен на новое. Вы по-прежнему будете ссылаться на файл winmd. Это часть файла windows.media.winmd в операционной системе Windows 10. Он входит в windows.winmd в качестве части пакета Windows SDK TH. Что касается UWP, то ссылка на него содержится в windows.foundation.univeralappcontract.winmd.

Чтобы воспроизвести содержимое высокого (HD, 1080p) и сверхвысокого (UHD) разрешений, защищенное PlayReady, вам потребуется реализовать аппаратное управление цифровыми правами PlayReady. Сведения о том, как реализовать аппаратное управление цифровыми правами PlayReady, см. в статье Аппаратное управление цифровыми правами.

Некоторое содержимое не поддерживается аппаратным управлением цифровыми правами. Дополнительные сведения о том, как отключить аппаратное управление цифровыми правами и включить программное управление цифровыми правами, см. в статье Переопределение аппаратного управления цифровыми правами.

Что касается диспетчера защиты мультимедиа, убедитесь, что для кода заданы следующие настройки.

var mediaProtectionManager = new Windows.Media.Protection.MediaProtectionManager();

mediaProtectionManager.Properties["Windows.Media.Protection.MediaProtectionSystemId"] = 
             '{F4637010-03C3-42CD-B932-B48ADF3A6A54}'
var cpsystems = new Windows.Foundation.Collections.PropertySet();
cpsystems["{F4637010-03C3-42CD-B932-B48ADF3A6A54}"] = 
                "Windows.Media.Protection.PlayReady.PlayReadyWinRTTrustedInput";
mediaProtectionManager.Properties["Windows.Media.Protection.MediaProtectionSystemIdMapping"] = cpsystems;

mediaProtectionManager.Properties["Windows.Media.Protection.MediaProtectionContainerGuid"] = 
                "{9A04F079-9840-4286-AB92-E65BE0885F95}";

Заблаговременное получение несохраняемой лицензии перед воспроизведением

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

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

  1. Заранее создайте сеанс воспроизведения, в котором можно сохранить несохраняемую лицензию. Пример:

    var cpsystems = new Windows.Foundation.Collections.PropertySet();       
    cpsystems["{F4637010-03C3-42CD-B932-B48ADF3A6A54}"] = "Windows.Media.Protection.PlayReady.PlayReadyWinRTTrustedInput"; // PlayReady
    
    var pmpSystemInfo = new Windows.Foundation.Collections.PropertySet();
    pmpSystemInfo["Windows.Media.Protection.MediaProtectionSystemId"] = "{F4637010-03C3-42CD-B932-B48ADF3A6A54}";
    pmpSystemInfo["Windows.Media.Protection.MediaProtectionSystemIdMapping"] = cpsystems;
    var pmpServer = new Windows.Media.Protection.MediaProtectionPMPServer( pmpSystemInfo );
    
  2. Свяжите этот сеанс воспроизведения с классом получения лицензии. Пример:

    var licenseSessionProperties = new Windows.Foundation.Collections.PropertySet();
    licenseSessionProperties["Windows.Media.Protection.MediaProtectionPMPServer"] = pmpServer;
    var licenseSession = new Windows.Media.Protection.PlayReady.PlayReadyLicenseSession( licenseSessionProperties );
    
  3. Создайте запрос лицензии в службу поддержки. Пример:

    var laSR = licenseSession.CreateLAServiceRequest();
    
  4. Выполните получение лицензии с использованием запроса в службу поддержки, созданного в шаге 3. Лицензия будет сохранена в сеансе воспроизведения.

  5. Для воспроизведения источника мультимедиа свяжите с ним сеанс воспроизведения. Пример:

    licenseSession.configureMediaProtectionManager( mediaProtectionManager );
    videoPlayer.msSetMediaProtectionManager( mediaProtectionManager );
    

Запрос о возможностях защиты

Начиная с Windows 10, версии 1703, можно запрашивать аппаратные возможности DRM, такие как декодирование кодеков, работа с разрешением и защита вывода (HDCP). Запросы выполняются с помощью метода IsTypeSupported, который принимает строку, представляющую возможности, запрос на поддержку которых отправляет пользователь, и строку, указывающую на ключевую систему, в которую подается запрос. Список поддерживаемых строковых значений см. на странице справочного материала об API, IsTypeSupported. В следующем примере кода показано использование этого метода.

using namespace Windows::Media::Protection;

ProtectionCapabilities^ sr = ref new ProtectionCapabilities();

ProtectionCapabilityResult result = sr->IsTypeSupported(
L"video/mp4; codecs=\"avc1.640028\"; features=\"decode-bpp=10,decode-fps=29.97,decode-res-x=1920,decode-res-y=1080\"",
L"com.microsoft.playready");

switch (result)
{
    case ProtectionCapabilityResult::Probably:
    // Queue up UHD HW DRM video
    break;

    case ProtectionCapabilityResult::Maybe:
    // Check again after UI or poll for more info.
    break;

    case ProtectionCapabilityResult::NotSupported:
    // Do not queue up UHD HW DRM video.
    break;
}

Добавление безопасной остановки

В данном разделе рассказывается, как добавить безопасную остановку в приложение UWP.

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

Для отправки запроса на безопасную остановку используются два указанных ниже основных сценария.

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

Пример реализации безопасной остановки см. в файле securestop.cs в примере PlayReady, расположенном в обозревателе примеров кода.

Использование технологии PlayReady DRM на Xbox One

Чтобы использовать PlayReady DRM в приложении UWP на Xbox One, сначала необходимо зарегистрировать учетную запись Центра партнеров , которая используется для публикации приложения для авторизации на использование PlayReady. Это можно сделать одним из двух способов.

  • Попросить ваше контактное лицо в корпорации Майкрософт запросить для вас разрешение.
  • Подайте заявку на авторизацию, отправив учетную запись Центра партнеров и название компании по адресу pronxbox@microsoft.com.

После получения авторизации вам нужно будет добавить в манифест приложения дополнительный элемент <DeviceCapability>. Это необходимо сделать вручную, поскольку в настоящее время в конструкторе манифеста приложения нет соответствующего параметра. Чтобы настроить эту оснастку, выполните указанные ниже действия:

  1. Откройте проект в Visual Studio, откройте Обозреватель решений и щелкните Package.appxmanifest правой кнопкой мыши.

  2. Выберите Открыть с помощью..., щелкните Редактор (текстовый) XML и нажмите кнопку ОК.

  3. Между тегами <Capabilities> добавьте следующий элемент <DeviceCapability>:

    <DeviceCapability Name="6a7e5907-885c-4bcb-b40a-073c067bd3d5" />
    
  4. Сохраните файл.

И наконец, при использовании PlayReady и Xbox One необходимо помнить следующее: в комплектах разработки установлено ограничение по уровню безопасности SL150 (это означает, что они не могут воспроизводить содержимое с уровнем SL2000 или SL3000). Розничные устройства способны воспроизводить содержимое с более высокими уровнями безопасности, но для тестирования приложения на комплекте для разработки нужно использовать содержимое с уровнем SL150. Протестировать такое содержимое можно одним из следующих способов:

  • Использовать специально подобранное тестовое содержимое, для которого требуются лицензии SL150.
  • Реализовать логику, чтобы только определенные прошедшие проверку подлинности тестовые учетные записи могли получать лицензии SL150 на определенное содержимое.

Используйте тот подход, который лучше всего подходит для вашего продукта.

См. также раздел