PlayReady DRM
このトピックでは、ユニバーサル Windows プラットフォーム (UWP) アプリに PlayReady で保護されたメディア コンテンツを追加する方法について説明します。
PlayReady DRM を使用すると、開発者は、コンテンツ プロバイダーによって定義されたアクセス 規則を適用しながら、PlayReady コンテンツをユーザーに提供できる UWP アプリを作成できます。 このセクションでは、Windows 10 用 Microsoft PlayReady DRM に加えられた変更と、以前の Windows 8.1 バージョンから Windows 10 バージョンへの変更をサポートするように PlayReady UWP アプリを変更する方法について説明します。
トピック | 説明 |
---|---|
ハードウェア 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) コンテンツと Ultra High Definition (UHD) コンテンツを安全に再生できます。 キー マテリアル (秘密キー、コンテンツ キー、これらのキーを派生またはロック解除するために使われるその他のキー マテリアルを含みます)、および暗号化解除された圧縮および非圧縮ビデオ サンプルは、ハードウェア セキュリティを利用して保護されます。 ハードウェア DRM が使用されている場合、HWDRM パイプラインは常に使用されている出力を認識するため、不明なイネーブラー (不明に再生/ダウンレスで不明に再生) は意味を持っていません。 詳細については、「 Hardware DRM」を参照してください。
PlayReady は appX フレームワーク コンポーネントではなくなりましたが、代わりにインボックス オペレーティング システム コンポーネントです。 名前空間が Microsoft.Media.PlayReadyClient から Windows.Media.Protection.PlayReady に変更されました。
PlayReady エラー コードを定義する次のヘッダーは、Windows ソフトウェア開発キット (SDK) の一部になりました。Windows.Media.Protection.PlayReadyErrors.h と Windows.Media.Protection.PlayReadyResults.h。
非永続的ライセンスのプロアクティブな取得を提供します。
以前のバージョンの PlayReady DRM では、非永続的ライセンスのプロアクティブな取得はサポートされていませんでした。 この機能がこのバージョンに追加されました。 これにより、最初のフレームまでの時間が短縮される可能性があります。 詳細については、「 再生前に非永続的ライセンスをアクティブに取得するを参照してください。
1 つのメッセージで複数のライセンスの取得を提供します。
クライアント アプリが 1 つのライセンス取得メッセージで複数の非永続的ライセンスを取得できるようにします。 これにより、ユーザーがコンテンツ ライブラリを閲覧している間に複数のコンテンツのライセンスを取得することで、最初のフレームまでの時間を短縮できます。これにより、ユーザーが再生するコンテンツを選択したときのライセンス取得の遅延が回避されます。 さらに、複数のキー識別子 (KID) を含むコンテンツ ヘッダーを有効にすることで、オーディオストリームとビデオストリームを暗号化してキーを分離できます。これにより、1 つのライセンス取得で、同じ結果を得るためにカスタム ロジックと複数のライセンス取得要求を使用する必要なく、コンテンツ ファイル内のすべてのストリームのすべてのライセンスを取得できます。
リアルタイム有効期限のサポート、または期間限定ライセンス (LDL) を追加しました。
ライセンスでリアルタイムの有効期限を設定し、再生中に期限切れのライセンスから別の (有効な) ライセンスにスムーズに移行する機能を提供します。 1 つのメッセージで複数のライセンスの取得と組み合わせると、ユーザーがまだコンテンツ ライブラリを参照している間にアプリが複数の LDL を非同期的に取得でき、ユーザーが再生するコンテンツを選択した後にのみ、より長い期間のライセンスを取得できます。 その後、再生はより迅速に開始されます (ライセンスが既に利用可能であるため)。また、アプリは LDL の有効期限が切れるまでにより長い期間のライセンスを取得するため、中断することなくコンテンツの最後までスムーズに再生を続けます。
非永続的なライセンス チェーンを追加しました。
非永続的ライセンスに対する時間ベースの制限 (有効期限、初回プレイ後の有効期限、リアルタイムの有効期限を含む) のサポートが追加されました。
HDCP Type 1 (Windows 10 のバージョン 2.2) ポリシーサポートを追加しました。
詳細については、「 考慮事項 を参照してください。
Miracast が出力として暗黙的になりました。
セキュリティで保護された停止を追加しました。
セキュア ストップは、PlayReady デバイスが、特定のコンテンツに対してメディア再生が停止したメディア ストリーミング サービスに自信を持ってアサートするための手段を提供します。 この機能により、メディア ストリーミング サービスは、特定のアカウントの異なるデバイスに対する使用制限の正確な適用とレポートを提供します。
オーディオとビデオのライセンスの分離を追加しました。
別々のトラックは、ビデオがオーディオとしてデコードされることを防ぎます。より堅牢なコンテンツ保護を実現します。 新しい標準では、オーディオ トラックとビジュアル トラックに個別のキーが必要です。
MaxResDecode を追加しました。
この機能は、(ライセンスではなく) より能力の高いキーを所有している場合でも、コンテンツの再生を最大解像度に制限するために追加されました。 複数のストリーム サイズが 1 つのキーでエンコードされる場合をサポートします。
次の新しいインターフェイス、クラス、および列挙型が PlayReady DRM に追加されました。
- IPlayReadyLicenseAcquisitionServiceRequest インターフェイス
- IPlayReadyLicenseSession インターフェイス
- IPlayReadySecureStopServiceRequest インターフェイス
- PlayReadyLicenseSession クラス
- PlayReadySecureStopIterable クラス
- PlayReadySecureStopIterator クラス
- PlayReadyHardwareDRMFeatures 列挙子
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 ではサポートされていません ( Override ハードウェア DRM を参照)。
- PlayReady DRM では、高効率ビデオ コーディング (HEVC /H.265) ビデオ圧縮標準がサポートされるようになりました。 HEVC をサポートするには、アプリで Common Encryption Scheme (CENC) バージョン 2 のコンテンツを使用する必要があります。これには、コンテンツのスライス ヘッダーをクリアのままにすることが含まれます。 詳細については、「ISO/IEC 23001-7 情報テクノロジ - MPEG システム テクノロジ -- パート 7: ISO 基本メディア ファイル形式ファイルでの一般的な暗号化 (仕様バージョン ISO/IEC 23001-7:2015 以降が必要です)」を参照してください。 Microsoft では、すべての HWDRM コンテンツに CENC バージョン 2 を使用することもお勧めします。 さらに、一部のハードウェア DRM は HEVC をサポートし、一部はサポートされません ( Override ハードウェア DRM を参照)。
- 特定の新しい PlayReady 3.0 機能 (ハードウェア ベースのクライアントの SL3000、1 つのライセンス取得メッセージで複数の非永続的ライセンスの取得、非永続的ライセンスに対する時間ベースの制限など) を利用するには、PlayReady サーバーが Microsoft PlayReady Server Software Development Kit v3.0.2769 リリース バージョン以降である必要があります。
- コンテンツ ライセンスで指定されている出力保護ポリシーによっては、接続された出力でこれらの要件がサポートされていない場合、エンド ユーザーのメディア再生が失敗することがあります。 次の表に、結果として発生する一般的なエラーのセットを示します。 詳細については、「 PlayReady のコンプライアンスと堅牢性の規則を参照してください。
エラー | Value | 説明 |
---|---|---|
ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP | 0xC0262513 | ライセンスの出力保護ポリシーでは、モニターが HDCP を使用する必要がありますが、HDCP をエンゲージできませんでした。 |
MF_E_POLICY_UNSUPPORTED | 0xC00D7159 | ライセンスの出力保護ポリシーでは、モニターは HDCP タイプ 1 を使用する必要がありますが、HDCP タイプ 1 はエンゲージできませんでした。 |
DRM_E_TEE_OUTPUT_PROTECTION_REQUIREMENTS_NOT_MET | 0x8004CD22 | このエラー コードは、ハードウェア DRM で実行されている場合にのみ発生します。 ライセンスの出力保護ポリシーでは、モニターが HDCP を利用するか、コンテンツの効果的な解決を減らす必要がありますが、HDCP をエンゲージできず、コンテンツの効果的な解決を減らすことができませんでした。ハードウェア DRM はコンテンツの解像度の削減をサポートしていないためです。 ソフトウェア DRM では、コンテンツが再生されます。 「 ハードウェア DRM の使用に関する概要を参照してください。 |
ERROR_GRAPHICS_OPM_NOT_SUPPORTED | 0xc0262500 | グラフィックス ドライバーは、出力保護をサポートしていません。 たとえば、モニターは VGA 経由で接続されているか、デジタル出力に適したグラフィックス ドライバーがインストールされていません。 後者の場合、インストールされる一般的なドライバーは Microsoft Basic ディスプレイ アダプターであり、適切なグラフィックス ドライバーをインストールすると問題が解決されます。 |
出力保護
次のセクションでは、PlayReady ライセンスの出力保護ポリシーで Windows 10 用 PlayReady DRM を使用する場合の動作について説明します。
PlayReady DRM では、 Microsoft PlayReady Extensible Media Rights Specification に含まれる出力保護レベルがサポートされます。 このドキュメントは、PlayReady ライセンス製品に付属するドキュメント パックにあります。
Note
ライセンス サーバーによって設定できる出力保護レベルの許容値は、 PlayReady コンプライアンス 規則によって管理されます。
PlayReady DRM では、PlayReady コンプライアンス 規則で指定されている出力コネクタでのみ、出力保護ポリシーを使用してコンテンツを再生できます。 PlayReady コンプライアンス規則で指定された出力コネクタ用語の詳細については、「 Defined Terms for PlayReady Compliance and Robustness Rulesを参照してください。
このセクションでは、Windows 10 用 PlayReady DRM と Windows 10 用 PlayReady ハードウェア DRM を使用した出力保護シナリオについて説明します。これは、一部の Windows クライアントでも使用できます。 PlayReady HWDRM では、Windows TEE 実装内からすべての出力保護が適用されます ( Hardware DRM を参照)。 その結果、PlayReady SWDRM (ソフトウェア DRM) を使用する場合と一部の動作が異なります。
- 非圧縮デジタル ビデオ 270 の出力保護レベル (OPL) のサポート: Windows 10 用 PlayReady HWDRM はダウン解像度をサポートしていないため、HDCP (高帯域幅デジタル コンテンツ保護) が強制されます。 HWDRM の高解像度コンテンツの OPL が 270 を超える (必須ではありませんが) ことをお勧めします。 さらに、ライセンス (HDCP バージョン 2.2 以降) で HDCP の種類の制限を設定する必要があります。
- SWDRM とは異なり、HWDRM では、出力保護は、最も能力の低いモニターに基づいてすべてのモニターに適用されます。 たとえば、2 台のモニターが接続されていて、一方が HDCP をサポートしていて、もう一方が HDCP をサポートしていない場合、HDCP をサポートするモニターでのみコンテンツがレンダリングされている場合でも、ライセンスに HDCP が必要な場合、再生は失敗します。 SWDRM では、HDCP をサポートするモニターでのみレンダリングされている限り、コンテンツは再生されます。
- HWDRM は、コンテンツ キーとライセンスによって次の条件が満たされない限り、クライアントによって使用され、セキュリティで保護されるとは限りません。
- ビデオ コンテンツ キーに使用されるライセンスには、3000 以上のセキュリティ レベルが必要です。
- オーディオはビデオとは異なるコンテンツ キーに暗号化する必要があり、オーディオに使用されるライセンスのセキュリティ レベルは 2000 以上である必要があります。 または、オーディオをプレーン テキストのままにすることもできます。
- すべての SWDRM シナリオでは、オーディオまたはビデオ コンテンツ キーに使用される PlayReady ライセンスの最小セキュリティ レベルが 2000 以下である必要があります。
出力保護レベル
次の表は、PlayReady ライセンス内のさまざまな OPL 間のマッピングと、Windows 10 用 PlayReady DRM で適用される方法の概要を示しています。
ビデオ
OPL | 圧縮デジタル ビデオ | 非圧縮デジタル ビデオ | アナログテレビ | |
---|---|---|---|---|
[任意] | HDMI、DVI、DisplayPort、MHL | コンポーネント、複合 | ||
100 | N/A\* | コンテンツを渡します | コンテンツを渡します | |
150 | N/A\* | CGMS-A CopyNever がエンゲージされている場合、または CGMS-A がエンゲージできない場合にコンテンツを渡します | ||
200 | CGMS-A CopyNever がエンゲージされたときにコンテンツを渡します | |||
250 | HDCP を利用しようとしますが、結果に関係なくコンテンツを渡します | N/A\* | ||
270 | SWDRM: HDCP の使用を試みます。 HDCP がエンゲージできない場合、PC は有効解像度をフレームあたり 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 製品の コンプライアンス規則を参照してください。 | N/A\* | ||
500 |
* 出力保護レベルの値の中には、ライセンス サーバーによって設定できないものもあります。 詳細については、PlayReady のコンプライアンス ルールに関するドキュメントを参照してください。
Audio
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 を使用すると、HDCP 2.0 以降が関与するとすぐに Miracast 出力でコンテンツを再生できます。 ただし、Windows 10 では、Miracast は デジタル 出力と見なされます。 Miracast のシナリオの詳細については、 PlayReady コンプライアンス規則を参照してください。 次の表は、PlayReady ライセンス内のさまざまな OPL 間のマッピングと、PlayReady DRM によって Miracast 出力に適用される方法の概要を示しています。
OPL | 圧縮デジタル オーディオ | 非圧縮デジタル オーディオ | 圧縮デジタル ビデオ | 非圧縮デジタル ビデオ |
---|---|---|---|---|
100 | HDCP 2.0 以降が関与している場合にコンテンツを渡します。 エンゲージに失敗した場合、コンテンツは渡されません | HDCP 2.0 以降が関与している場合にコンテンツを渡します。 エンゲージに失敗した場合、コンテンツは渡されません | N/A\* | HDCP 2.0 以降が関与している場合にコンテンツを渡します。 エンゲージに失敗した場合、コンテンツは渡されません |
150 | コンテンツを渡しません | N/A\* | ||
200 | ||||
250 | HDCP 2.0 以降が関与している場合にコンテンツを渡します。 エンゲージに失敗した場合、コンテンツは渡されません | |||
270 | N/A\* | |||
300 | HDCP 2.0 以降が関与している場合にコンテンツを渡します。 エンゲージに失敗した場合、コンテンツは渡されません | コンテンツを渡しません |
**HDCP のタイプ制限が定義されていない場合:** HDCP 2.0 以降がエンゲージされている場合はコンテンツが渡されます。 エンゲージに失敗した場合、コンテンツは渡されません。 **HDCP のタイプ制限が定義されている場合:** HDCP 2.2 でコンテンツが渡され、コンテンツ ストリーム タイプが 1 に設定されます。 HDCP がエンゲージに失敗した場合、またはコンテンツ ストリームの種類を 1 に設定できない場合、コンテンツは渡されません。 |
|
400 | N/A\* | Windows 10 では、後続の OPL 値に関係なく、圧縮されたデジタル ビデオ コンテンツが出力に渡されることはありません。 圧縮されたデジタル ビデオ コンテンツの詳細については、「playReady 製品の コンプライアンス規則を参照してください。 | N/A\* | |
500 |
* 出力保護レベルの値の中には、ライセンス サーバーによって設定できないものもあります。 詳細については、PlayReady のコンプライアンス ルールに関するドキュメントを参照してください。
明示的な出力に関するその他の制限事項
次の表では、Windows 10 での明示的なデジタル ビデオ出力保護制限の PlayReady DRM の実装について説明します。
シナリオ | 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 以上の値の非圧縮デジタル ビデオ出力保護レベルも指定する必要があります |
次の表では、明示的なアナログ ビデオ出力保護制限の Windows 10 用 PlayReady DRM の実装について説明します。
シナリオ | GUID | もし... | 結果 | |
---|---|---|---|---|
アナログ コンピューター モニター | D783A191-E083-4BAF-B2DA-E69F910B3772 | 接続された出力は、VGA、DVI–analog などです。 | SWDRM: PC は、有効解像度をフレームあたり 520,000 epx に制限し、コンテンツを渡します | HWDRM: はコンテンツを渡しません |
アナログ コンポーネント | 811C5110-46C8-4C6E-8163-C0482A15D47E | 接続された出力: コンポーネント | SWDRM: PC は、有効解像度をフレームあたり 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 px 以下のコンテンツをアナログテレビ出力に渡す | 表 3.5.7.3 に従って、解像度が 520,000 px 未満の場合はコンポーネント ビデオと PAL モードにのみ AGC を設定し、解像度が 520,000 px 未満の場合は NTSC の AGC とカラー ストライプ情報を設定します。 コンプライアンス規則 | |
デジタルのみの出力 | 760AE755-682A-41E0-B1B3-DCDF836A7306 | 接続された出力はアナログ | コンテンツを渡さない |
Note
再生に "Mini DisplayPort to VGA" などのアダプター ドングルを使用する場合、Windows 10 では出力がデジタル ビデオ出力と見なされ、アナログ ビデオ ポリシーを適用することはできません。
次の表では、他の状況での再生を可能にする Windows 10 用 PlayReady DRM の実装について説明します。
シナリオ | GUID | もし... | 結果 | |
---|---|---|---|---|
不明な出力 | 786627D8-C2A6-44BE-8F88-08AE255B01A7 | 出力を合理的に決定できない場合、またはグラフィックス ドライバーで OPM を確立できない場合 | SWDRM: コンテンツを渡す | HWDRM: はコンテンツを渡しません |
constriction を使用した不明な出力 | B621D91F-EDCC-4035-8D4B-DC71760D43E9 | 出力を合理的に決定できない場合、またはグラフィックス ドライバーで OPM を確立できない場合 | SWDRM: PC は、有効解像度をフレームあたり 520,000 epx に制限し、コンテンツを渡します | HWDRM: はコンテンツを渡しません |
前提条件
PlayReady で保護された UWP アプリの作成を開始する前に、次のソフトウェアをシステムにインストールする必要があります。
- Windows 10。
- UWP アプリ用 PlayReady DRM のサンプルのいずれかをコンパイルする場合は、Microsoft Visual Studio 2015 以降を使用してサンプルをコンパイルする必要があります。 引き続き Microsoft Visual Studio 2013 を使用して、PlayReady DRM for Windows 8.1 ストア アプリのサンプルをコンパイルできます。
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 の一部です。 これは、TH の Windows SDK の一部として windows.winmd にあります。 UWP の場合は、windows.foundation.univeralappcontract.winmd で参照されます。
PlayReady で保護された高解像度 (HD) コンテンツ (1080p) と Ultra-High Definition (UHD) コンテンツを再生するには、PlayReady ハードウェア DRM を実装する必要があります。 PlayReady ハードウェア DRM を実装する方法については、「 Hardware DRM」を参照してください。
一部のコンテンツは、ハードウェア DRM ではサポートされていません。 ハードウェア DRM の無効化とソフトウェア DRM の有効化については、「 Override Hardware 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 では、非永続的ライセンスは再生中にのみ事後的に取得できました。 このバージョンでは、再生を開始する前に非永続的ライセンスを事前に取得できます。
非永続的ライセンスを格納できる再生セッションを事前に作成します。 次に例を示します。
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 );
その再生セッションをライセンス取得クラスに関連付けます。 次に例を示します。
var licenseSessionProperties = new Windows.Foundation.Collections.PropertySet(); licenseSessionProperties["Windows.Media.Protection.MediaProtectionPMPServer"] = pmpServer; var licenseSession = new Windows.Media.Protection.PlayReady.PlayReadyLicenseSession( licenseSessionProperties );
ライセンス サービス要求を作成します。 次に例を示します。
var laSR = licenseSession.CreateLAServiceRequest();
手順 3 で作成したサービス要求を使用して、ライセンスの取得を実行します。 ライセンスは再生セッションに格納されます。
再生セッションをメディア ソースに関連付けて再生します。 次に例を示します。
licenseSession.configureMediaProtectionManager( mediaProtectionManager ); videoPlayer.msSetMediaProtectionManager( mediaProtectionManager );
保護機能のクエリ
Windows 10 バージョン 1703 以降では、デコード コーデック、解像度、出力保護 (HDCP) などの HW DRM 機能に対してクエリを実行できます。 クエリは、 IsTypeSupported メソッドを使用して実行されます。このメソッドは、サポートが照会される機能を表す文字列と、クエリが適用されるキー システムを指定する文字列を受け取ります。 サポートされている文字列値の一覧については、 IsTypeSupported の API リファレンス ページを参照してください。 次のコード例は、このメソッドの使用方法を示しています。
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>
を追加する必要があります。 アプリ マニフェスト デザイナーには現在使用できる設定がないため、これを手動で追加する必要があります。 次の手順に従って構成します。
Visual Studio でプロジェクトを開き、ソリューション エクスプローラーを開き、Package.appxmanifest を右クリックします。
[で開く...] を選択し、[
XML (テキスト) エディター を選択し、OK をクリックします。<Capabilities>
タグの間に、次の<DeviceCapability>
を追加します。<DeviceCapability Name="6a7e5907-885c-4bcb-b40a-073c067bd3d5" />
ファイルを保存します。
最後に、Xbox One で PlayReady を使用する場合の最後の考慮事項が 1 つあります。開発キットでは、SL150 の制限があります (つまり、SL2000 または SL3000 コンテンツを再生できません)。 リテール デバイスでは、より高いセキュリティ レベルでコンテンツを再生できますが、開発キットでアプリをテストするには、SL150 コンテンツを使用する必要があります。 このコンテンツは、次のいずれかの方法でテストできます。
- SL150 ライセンスを必要とする精選されたテスト コンテンツを使用します。
- 特定の認証済みテスト アカウントのみが特定のコンテンツの SL150 ライセンスを取得できるようにロジックを実装します。
会社と製品にとって最も意味のあるアプローチを使用します。