PlayReady DRM

このトピックでは、ユニバーサル Windows プラットフォーム (UWP) アプリに PlayReady で保護されたメディア コンテンツを追加する方法について説明します。

PlayReady DRM を使うと、開発者はコンテンツ プロバイダーが定義したアクセス ルールを適用しながら、ユーザーに PlayReady コンテンツを提供することができる UWP アプリを作成できます。 ここでは、Windows 10 用の Microsoft PlayReady DRM に加えられた変更と、PlayReady UWP アプリを変更して、以前の Windows 8.1 バージョンから Windows 10 バージョンに加えられた変更をサポートする方法について説明します。

トピック 説明
ハードウェア DRM このトピックでは、PlayReady ハードウェア ベースのデジタル著作権管理 (DRM) を UWP アプリに追加する方法の概要を示します。
PlayReady を使ったアダプティブ ストリーミング この記事では、ユニバーサル Windows プラットフォーム (UWP) アプリに、Microsoft PlayReady コンテンツ保護を使ったマルチメディア コンテンツのアダプティブ ストリーミングを追加する方法について説明します。 現在、この機能では、HTTP ライブ ストリーミング (HLS) と Dynamic Adaptive Streaming over HTTP (DASH) コンテンツの再生がサポートされています。

PlayReady DRM の新機能

次に、Windows 10 用の PlayReady DRM に関する新機能や変更点について説明します。

  • 追加されたハードウェア デジタル著作権管理 (HWDRM)。

    ハードウェア ベースのコンテンツ保護により、複数のデバイス プラットフォーム上で、高解像度 (HD) と超高解像度 (UHD) のコンテンツを安全に再生できます。 キー マテリアル (秘密キー、コンテンツ キー、これらのキーを派生またはロック解除するために使われるその他のキー マテリアルを含みます)、および暗号化解除された圧縮および非圧縮ビデオ サンプルは、ハードウェア セキュリティを利用して保護されます。 ハードウェア DRM の使用中は、HWDRM パイプラインは使用中の出力を常に判別できるため、不明な有効機能 (不明な再生/低解像度の不明な再生) も意味を持ちません。 詳しくは、「ハードウェア DRM」をご覧ください。

  • PlayReady は AppX フレームワーク コンポーネントではなく、インボックス オペレーティング システム コンポーネントになりました。 名前空間は、Microsoft.Media.PlayReadyClient から Windows.Media.Protection.PlayReady に変更されました。

  • PlayReady のエラー コードを定義する Windows.Media.Protection.PlayReadyErrors.h と Windows.Media.Protection.PlayReadyResults.h ヘッダーは、Windows ソフトウェア開発キット (Windows SDK) の一部になりました。

  • 永続的でないライセンスの事前の取得を提供します。

    以前のバージョンの PlayReady DRM は、永続的でないライセンスの事前取得をサポートしませんでした。 この機能は、このバージョンに追加されました。 これにより、最初のフレームまでの時間を減らすことができます。 詳しくは、「再生する前に永続的でないライセンスを事前に取得する」をご覧ください。

  • 1 つのメッセージで複数のライセンスを取得できるようにします。

    クライアント アプリが、1 つのライセンス取得メッセージで複数の永続的でないライセンスを取得できるようにします。 これにより、ユーザーがコンテンツ ライブラリを閲覧中に、複数のコンテンツのライセンスを取得して、最初のフレームまでの時間を短縮することができます。この結果、ユーザーが再生するコンテンツを選択したときに、ライセンス取得の遅延を回避できます。 さらに、複数のキー識別子 (KID) を含むコンテンツ ヘッダーを有効にして、オーディオとビデオのストリームを個別のキーに暗号化できます。これにより、カスタム ロジックと複数のライセンス取得要求を使って同じ結果を得る代わりに、単一ライセンスの取得で、コンテンツ ファイル内のすべてのストリームのすべてのライセンスを取得できます。

  • リアルタイムの有効期限のサポートや期間限定ライセンス (LDL) が追加されました。

    ライセンスにリアルタイムの有効期限を設定し、再生中に、有効期限が切れるライセンスから別の (有効な) ライセンスにスムーズに移行することができます。 1 つのメッセージで複数のライセンスの取得と組み合わせることにより、アプリは、ユーザーがコンテンツ ライブラリを閲覧中に、いくつかの LDL を非同期的に取得することができ、ユーザーが再生するコンテンツを選ぶと、期間の長いライセンスのみを取得することができます。 次に、再生はより迅速に開始し (ライセンスが既に利用できるため)、LDL の有効期限が切れるまでに、アプリはより長い期間のライセンスを取得するため、中断なく、コンテンツの最後までスムーズに再生を続行します。

  • 永続的でないライセンス チェーンを追加しました。

  • 永続的でないライセンスで、時間ベースの制限 (有効期限、最初のプレイ後の有効期限切れ、リアルタイムの有効期限を含む) のサポートを追加しました。

  • HDCP Type 1 (Windows 10 ではバージョン 2.2) ポリシーのサポートを追加しました。

    詳しくは、「考慮事項」をご覧ください。

  • Miracast が暗黙的な出力となりました。

  • セキュア ストップが追加されました。

    セキュア ストップによって、特定のコンテンツについてのメディア再生が停止したメディア ストリーミング サービスに対して、PlayReady デバイスが確実にアサートするための手段が提供されます。 この機能により、メディア ストリーミング サービスは、特定のアカウントのさまざまなデバイスに対する使用制限を正しく適用し報告することができるようになります。

  • オーディオとビデオに関するライセンスの分離が追加されました。

    トラックを分離することによって、ビデオがオーディオにデコードされるのを防ぐことができます。これにより、さらに強力なコンテンツ保護が可能になります。 最新の標準では、オーディオ トラックと映像トラックに対して別々のキーが必要になります。

  • MaxResDecode が追加されました。

    この機能は、コンテンツの再生を最大解像度に制限するために追加されました (ライセンスではなく、より強力なキーを所有している場合にも制限を受けます)。 これは、複数のストリーム サイズが 1 つのキーでエンコードされる状況をサポートします。

PlayReady DRM に、次の新しいインターフェイス、クラス、列挙子が追加されました。

PlayReady DRM の新機能を利用する方法を示すために、新しいサンプルが作成されました。 サンプルは、コード サンプル ブラウザーからダウンロードできます。

考慮事項

  • PlayReady DRM は、HDCP Type 1 (HDCP バージョン 2.1 以降でサポートされます) をサポートするようになりました。 PlayReady は、デバイスが適用するライセンスで HDCP タイプ制限ポリシーを持っています。 Windows 10 では、このポリシーにより HDCP 2.2 以降がエンゲージされます。 この機能は、PlayReady Server v3.0 SDK ライセンスで有効にできます (サーバーは、HDCP タイプ制限 GUID を使って、ライセンスでこのポリシーを管理します)。 詳しくは、「PlayReady の適合性と信頼性規則」をご覧ください。
  • Windows Media Video (VC-1 とも呼ばれます) はハードウェア DRM ではサポートされません (「ハードウェア DRM のオーバーライド」をご覧ください)。
  • PlayReady DRM は、高効率ビデオ コーディング (HEVC/H.265) ビデオ圧縮規格をサポートしています。 アプリは、HEVC をサポートするには、コンテンツのスライス ヘッダーがクリア テキストのままになる、Common Encryption Scheme (CENC) バージョン 2 のコンテンツを使う必要があります。 詳細については、「ISO/IEC 23001-7 情報テクノロジ -- MPEG システム テクノロジ -- パート 7: ISO ベース メディア ファイル形式ファイルでの一般的な暗号化 (仕様バージョン ISO/IEC 23001-7:2015 以降が必要です)」を参照してください。 また、すべて HWDRM のコンテンツで、CENC バージョン 2 を使うことをお勧めします。 さらに、ハードウェア DRM によって、HEVC をサポートするものとそうでないものがあります (「ハードウェア DRM のオーバーライド」をご覧ください)。
  • 新しい PlayReady 3.0 機能 (ハードウェア ベースのクライアント用の SL3000、1 つのライセンス取得メッセージでの永続的でない複数のライセンスの取得、永続的でないライセンスでの時間ベースの制限を含みますが、これらに限定されません) を活用するには、PlayReady サーバーが、Microsoft PlayReady サーバー ソフトウェア開発キット v3.0.2769 リリース バージョン以降である必要があります。
  • コンテンツ ライセンスで指定された、出力保護ポリシーによっては、接続されている出力がこれらの要件をサポートしていない場合、メディアの再生はエンド ユーザーに対して失敗する可能性があります。 次の表は、結果として発生する一般的なエラーを示しています。 詳しくは、「PlayReady の適合性と信頼性規則」をご覧ください。
エラー 説明
ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP 0xC0262513 ライセンスの出力保護ポリシーでは、モニターが HDCP をエンゲージする必要がありますが、HDCP をエンゲージできませんでした。
MF_E_POLICY_UNSUPPORTED 0xC00D7159 ライセンスの出力保護ポリシーでは、モニターが HDCP Type 1 をエンゲージする必要がありますが、HDCP Type 1 をエンゲージできませんでした。
DRM_E_TEE_OUTPUT_PROTECTION_REQUIREMENTS_NOT_MET 0x8004CD22 このエラー コードは、ハードウェア DRM で実行されている場合にのみ発生します。 ライセンスの出力保護ポリシーでは、モニターが HDCP をエンゲージするか、コンテンツの実質的な解像度を減らす必要がありますが、ハードウェア DRM はコンテンツの解像度の減少をサポートしていないため、HDCP をエンゲージできず、コンテンツの実質的な解像度を減らすことができませんでした。 ソフトウェア DRM で、コンテンツは再生されます。 「ハードウェア DRM を使うための考慮事項」をご覧ください。
ERROR_GRAPHICS_OPM_NOT_SUPPORTED 0xc0262500 グラフィックス ドライバーは、出力保護をサポートしていません。 たとえば、モニターが VGA 経由で接続されているか、デジタル出力用の適切なグラフィックス ドライバーがインストールされていません。 後者の場合、インストールされている一般的なドライバーは Microsoft ベーシック ディスプレイ アダプターであり、適切なグラフィックス ドライバーをインストールすることで、問題が解決されます。

出力保護

次のセクションでは、PlayReady ライセンスの出力保護ポリシーを用いて Windows 10 用の PlayReady DRM を使用する場合の動作について説明します。

PlayReady DRM でサポートされる出力保護レベルは、Microsoft PlayReady の拡張可能なメディア使用権仕様に記載されています。 このドキュメントは、PlayReady ライセンス製品に付属しているドキュメント パッケージに含まれています。

注意

ライセンス サーバーで設定できる出力保護レベルの許容値は、PlayReady の適合性規則に準拠します。

PlayReady DRM では、PlayReady の適合性規則で指定された出力コネクタ上でのみ出力保護ポリシーを使用してコンテンツを再生できます。 PlayReady の適合性規則で指定された出力コネクタの条件について詳しくは、PlayReady の適合性と信頼性規則の定義済みの条件をご覧ください

このセクションは、主に Windows 10 用の PlayReady DRM と、一部の Windows クライアントでも利用できる Windows 10 用の PlayReady ハードウェア DRM を使用した出力保護シナリオについて扱います。 PlayReady HWDRM を使用すると、すべての出力保護は Windows TEE 実装内から適用されます (ハードウェア DRM をご覧ください)。 このため、PlayReady SWDRM (ソフトウェア DRM) を使用する場合とは一部の動作が異なります。

  • 未圧縮デジタル ビデオ用の出力保護レベル (OPL) 270 のサポート。Windows 10 用の PlayReady HWDRM では解像度の低下がサポートされず、HDCP (高帯域幅デジタル コンテンツ保護) がエンゲージされます。 HWDRM の高解像度コンテンツには、270 を超える OPL をお勧めします (ただし、必須ではありません)。 さらに、ライセンス (HDCP バージョン 2.2 以降) で HDCP タイプ制限を設定する必要があります。
  • SWDRM とは異なり、HWDRM を使用すると、出力の保護は最も能力の低いモニターに基づいてすべてのモニターに適用されます。 たとえば、ユーザーが 2 台のモニターを接続していて、1 台が HDCP をサポートし、もう 1 台がサポートしていない場合、HDCP をサポートするモニターでコンテンツがレンダリングされているのみの場合でも、ライセンスに HDCP が必要な場合、再生は失敗します。 SWDRM では、HDCP をサポートされているモニターにレンダリングされているのみの場合、コンテンツは再生されます。
  • コンテンツのキーとライセンスで、次の条件が満たされていない限り、HWDRM はクライアントで使用され、安全であることが保証されません。
    • ビデオのコンテンツ キーに使われるライセンスには、最低限のセキュリティ レベルとして 3000 が必要です。
    • オーディオは、ビデオとは異なるコンテンツ キーに暗号化される必要があります。また、オーディオに使われるライセンスには、最低限のセキュリティ レベルとして 2000 が必要です。 または、オーディオをプレーン テキストのままにすることもできます。
  • すべての SWDRM のシナリオでは、オーディオやビデオのコンテンツ キーに使用される PlayReady ライセンスの最低限のセキュリティ レベルが 2000 以下である必要があります。

出力保護レベル

次の表では、PlayReady ライセンスのさまざまな OPL 間のマッピングと、Windows 10 用の PlayReady DRM でそれらを適用する方法の概要を示します。

ビデオ

OPL 圧縮デジタル ビデオ 未圧縮デジタル ビデオ アナログ テレビ
Any HDMI、DVI、DisplayPort、MHL コンポジット、コンポーネント
100 該当なし。\* コンテンツが渡されます。 コンテンツが渡されます。
150 該当なし。\* CGMS-A CopyNever がエンゲージされている場合、または CGMS-A をエンゲージできない場合に、コンテンツが渡されます。
200 CGMS-A CopyNever がエンゲージされている場合に、コンテンツが渡されます。
250 HDCP に対するエンゲージを試みますが、結果にかかわらずコンテンツが渡されます。 該当なし。\*
270 SWDRM: HDCP のエンゲージを試みます。 HDCP をエンゲージできない場合、PC は 1 フレームあたりの有効な解像度を 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 Any
100 コンテンツが渡されます。 コンテンツが渡されます。 コンテンツが渡されます。
150 コンテンツは渡されません。
200
250 HDMI、DisplayPort、または MHL で HDCP がエンゲージされている場合、または SCMS がエンゲージされて CopyNever に設定されている場合、コンテンツが渡されます。
300 HDMI、DisplayPort、または MHL で HDCP がエンゲージされている場合にコンテンツが渡されます。

Miracast

PlayReady DRM では、HDCP 2.0 以降がエンゲージされるとすぐに Miracast 出力を通じてコンテンツを再生できます。 ただし、Windows 10 では Miracast はデジタル出力と見なされます。 Miracast シナリオについて詳しくは、PlayReady の適合規則をご覧ください。 次の表に、PlayReady ライセンスのさまざまな OPL 間のマッピングと、PlayReady DRM でそれらを Miracast 出力に適用する方法について、概要を示します。

OPL 圧縮デジタル オーディオ 未圧縮デジタル オーディオ 圧縮デジタル ビデオ 未圧縮デジタル ビデオ
100 HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージできない場合はコンテンツが渡されません。 HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージできない場合はコンテンツが渡されません。 該当なし。\* HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージできない場合はコンテンツが渡されません。
150 コンテンツは渡されません。 該当なし。\*
200
250 HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージできない場合はコンテンツが渡されません。
270 該当なし。\*
300 HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージできない場合はコンテンツが渡されません。 コンテンツは渡されません。

**HDCP のタイプ制限が定義されていない場合:** HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージできない場合はコンテンツが渡されません。

**HDCP のタイプ制限が定義されている場合:** HDCP 2.2 でコンテンツが渡され、コンテンツ ストリーム タイプが 1 に設定されます。 HDCP をエンゲージできない場合、またはコンテンツ ストリーム タイプを 1 に設定できない場合、コンテンツは渡されません。

400 該当なし。\* Windows 10 では、後続の OPL 値に関わらず、圧縮デジタル ビデオ コンテンツが出力に渡されることはありません。 圧縮デジタル ビデオ コンテンツについて詳しくは、PlayReady 製品の適合規則をご覧ください。 該当なし。\*
500

* 出力保護レベルの値の中には、ライセンス サーバーによって設定できないものもあります。 詳細については、PlayReady のコンプライアンス ルールに関するドキュメントを参照してください。

その他の明示的な出力制限

次の表では、明示的なデジタル ビデオ出力保護の制限に関する Windows 10 用の PlayReady DRM の実装を説明します。

シナリオ GUID 条件 結果
有効な解像度の最大のデコード サイズ 9645E831-E01D-4FFF-8342-0A720E3E028F 接続された出力: デジタル ビデオ出力、Miracast、HDMI、DVI など

次のいずれかに制限される場合にコンテンツが渡されます。

  • (a) フレームの幅が最大フレーム幅以下で (ピクセル単位)、フレームの高さが最大フレーム高以下 (ピクセル単位)
  • (b) フレームの高さが最大フレーム幅以下で (ピクセル単位)、フレームの幅が最大フレーム高以下 (ピクセル単位)
HDCP タイプの制限 ABB2C6F1-E663-4625-A945-972D17B231E7 接続された出力: デジタル ビデオ出力、Miracast、HDMI、DVI など HDCP 2.2 でコンテンツが渡され、コンテンツ ストリーム タイプが 1 に設定されます。 HDCP 2.2 をエンゲージできない場合、またはコンテンツ ストリーム タイプを 1 に設定できない場合、コンテンツは渡されません。 未圧縮デジタル ビデオ出力の保護レベルに 271 以上の値が指定されている必要もあります。

次の表では、明示的なアナログ ビデオ出力保護の制限に関する Windows 10 用の PlayReady DRM の実装を説明します。

シナリオ GUID 条件 結果
アナログ コンピューター モニター D783A191-E083-4BAF-B2DA-E69F910B3772 接続された出力: VGA、DVI–アナログなど SWDRM: PC は有効な解像度を 1 フレームあたり 520,000 epx に制限し、コンテンツが渡されます。 HWDRM: コンテンツは渡されません。
アナログ コンポーネント 811C5110-46C8-4C6E-8163-C0482A15D47E 接続された出力: コンポーネント SWDRM: PC は有効な解像度を 1 フレームあたり 520,000 epx に制限し、コンテンツが渡されます。 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 ピクセル以下の解像度でコンテンツがアナログ TV 出力に渡される場合 解像度が 520,000 ピクセル未満のコンポーネント ビデオおよび PAL モードには自動ゲイン制御のみが設定され、解像度が 520,000 ピクセル未満の NTSC には自動ゲイン制御とカラー ストライプ情報が設定されます。これについては、適合規則のテーブル 3.5.7.3 に 記載されています。
デジタルのみの出力 760AE755-682A-41E0-B1B3-DCDF836A7306 接続されている出力がアナログ コンテンツは渡されません

注意

"Mini DisplayPort to VGA" のようなアダプター ドングルを再生に使用する場合、Windows 10 ではその出力はデジタル ビデオ出力と見なされ、アナログ ビデオ ポリシーが適用されません。

次の表では、他の状況で再生を可能にする Windows 10 用の PlayReady DRM 実装について説明します。

シナリオ GUID 条件 結果
不明な出力 786627D8-C2A6-44BE-8F88-08AE255B01A7 出力を適切に特定できない場合、またはグラフィックス ドライバーで OPM を確立できない場合 SWDRM: コンテンツが渡されます。 HWDRM: コンテンツは渡されません。
制限のある不明な出力 B621D91F-EDCC-4035-8D4B-DC71760D43E9 出力を適切に特定できない場合、またはグラフィックス ドライバーで OPM を確立できない場合 SWDRM: PC は有効な解像度を 1 フレームあたり 520,000 epx に制限し、コンテンツが渡されます。 HWDRM: コンテンツは渡されません。

前提条件

PlayReady で保護された UWP アプリの作成を開始する前に、次のソフトウェアがシステムにインストールされている必要があります。

  • Windows 10。
  • UWP アプリ用の PlayReady DRM のサンプルをコンパイルする場合、サンプルをコンパイルするには Microsoft Visual Studio 2015 以降を使う必要があります。 引き続き、Microsoft Visual Studio 2013 を使って、Windows 8.1 ストア アプリ用の PlayReady DRM の任意のサンプルをコンパイルできます。

PlayReady UWP アプリの移行ガイド

このセクションには、既にある PlayReady Windows 8.x ストア アプリを Windows 10 に移行する方法についての情報が含まれています。

Windows 10 の PlayReady UWP アプリの名前空間は、Microsoft.Media.PlayReadyClient から Windows.Media.Protection.PlayReady に変更されました。 つまり、コード内で以前の名前空間を探し、新しい名前空間に置き換える必要があります。 winmd ファイルは、引き続き参照されます。 このファイルは、Windows 10 オペレーティング システムの windows.media.winmd の 1 つであり、 TH の Windows SDK の一部として、windows.winmd に含まれています。 winmd ファイルは、UWP では、windows.foundation.univeralappcontract.winmd で参照されます。

PlayReady で保護された高解像度 (HD) コンテンツ (1080p) および超高解像度 (UHD) コンテンツを再生するには、PlayReady ハードウェア DRM を実装する必要があります。 PlayReady ハードウェア DRM を実装する方法について詳しくは、「ハードウェア DRM」をご覧ください。

一部のコンテンツは、ハードウェア DRM ではサポートされません。 ハードウェア DRM の無効化とソフトウェア DRM の有効化について詳しくは、「ハードウェア DRM のオーバーライド」をご覧ください。

メディア保護マネージャーについては、コードに次の設定を必ず含めてください (まだ含まれていない場合)。

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 Version 1703 以降では、デコード コーデック、解像度、出力保護 (HDCP) などの HW DRM 機能を照会できます。 クエリを実行するには、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 デバイスが確実にアサートするための手段が提供されます。 この機能により、メディア ストリーミング サービスは、特定のアカウントのさまざまなデバイスに対する使用制限を正しく適用し報告することができるようになります。

セキュア ストップのチャレンジを送信する主なシナリオが 2 つあります。

  • コンテンツの最後に達したか、ユーザーがメディア プレゼンテーションを途中で停止したため、メディア プレゼンテーションが停止した場合。
  • (システムまたはアプリのクラッシュなどにより) 前回のセッションが予期せずに終了した場合。 アプリは、起動時またはシャットダウン時に、未処理のセキュア ストップ セッションについて照会し、その他のメディア再生とは別にチャレンジを送信する必要があります。

セキュア ストップのサンプル実装については、コード サンプル ブラウザーにある PlayReady サンプルの securestop.cs ファイルをご覧ください。

Xbox One での PlayReady DRM の使用

Xbox One において UWP アプリで PlayReady DRM を使用するには、まず、アプリの公開に使用するパートナー センター アカウントを登録して、PlayReady の使用許可を得る必要があります。 2 つの方法のいずれかでこれを行うことができます。

  • Microsoft の連絡担当者を通じて許可を申請します。
  • パートナー センター アカウントと会社名を pronxbox@microsoft.com に送信して許可を申請します。

許可を受信したら、追加の <DeviceCapability> をアプリ マニフェストに追加する必要があります。 アプリケーション マニフェスト デザイナーには現在利用できる設定がないため、これは手動で追加する必要があります。 構成するには、次の手順を実行します。

  1. Visual Studio でプロジェクトを開き、ソリューション エクスプローラーを開いて Package.appxmanifest を右クリックします。

  2. [ファイルを開くアプリケーションの選択] をクリックして [XML (テキスト) エディター] を選択し、[OK] をクリックします。

  3. <Capabilities> タグの間に次の <DeviceCapability> を追加します。

    <DeviceCapability Name="6a7e5907-885c-4bcb-b40a-073c067bd3d5" />
    
  4. ファイルを保存します。

最後に、Xbox One で PlayReady を使用する場合の最後の考慮事項として、開発キットでは、SL150 のみに使用が制限されています (SL2000 や SL3000 のコンテンツは再生できません)。 製品デバイスではセキュリティ レベルの高いコンテンツを再生できますが、開発キットでアプリをテストするには、SL150 のコンテンツを使用する必要があります。 このコンテンツのテストは、次のいずれかの方法で行うことができます。

  • SL150 ライセンスを必要とするテスト コンテンツを選択して使用します。
  • 特定の認証されたテスト アカウントのみが、特定のコンテンツについて SL150 ライセンスを取得できるようにロジックを実装します。

企業と製品に応じて最適なアプローチを使用してください。

こちらもご覧ください