[アーティクル]
01/09/2023
3 人の共同作成者
この記事の内容
警告
Azure Media Services は、2024 年 6 月 30 日に廃止されます。 詳細については、AMS 退職ガイド を参照してください。
視聴者がインターネットから切断されたときに、再生のために携帯電話またはタブレットにコンテンツをダウンロードすることが必要になる場合があります。
一部の国/地域では、インターネットの可用性や帯域幅が制限されています。 ユーザーはコンテンツをダウンロードして、より高い解像度で視聴することができます。
一部のコンテンツ プロバイダーは、国/地域の境界を超えて DRM ライセンスの配信を許可しない場合があります。 ユーザーが海外旅行する必要があり、それでもコンテンツを視聴したい場合は、オフラインダウンロードが必要です。
Azure Media Services には、Microsoft PlayReady、Google Widevine* 、Apple FairPlay Streaming、AES-128 暗号化用に 、適切に設計された一連の コンテンツ保護サービスが用意されています。
手記
オフライン DRM は、コンテンツをダウンロードするときにライセンスに対して 1 つの要求を行った場合にのみ課金されます。 どのエラーにも課金は行われません。
前提 条件
iOS 10 以降のデバイスで FairPlay 用のオフライン DRM を実装する前に、
Apple FairPlay のライセンス要件と構成 読む
Apple Developer Network から FPS SDK を取得します。 FPS SDK には、次の 2 つのコンポーネントが含まれています。
キー セキュリティ モジュール (KSM)、クライアント サンプル、仕様、一連のテスト ベクターを含む FPS サーバー SDK。
FPS 展開パック。D 関数の仕様と、FPS 証明書の顧客固有の秘密キーとアプリケーション シークレット キーを生成する方法に関する手順が含まれています。 Apple は、ライセンスを取得したコンテンツ プロバイダーにのみ FPS 展開パックを発行します。
FPS 証明書の生成の一環として受け取る .der/.cer 証明書ファイルには公開キーが含まれており、クライアントが使用できるようになります。 秘密キー (.pfx) は、Azure Key Vault または別のセキュリティで保護された場所で保護する必要があります。
Azure Key Vault に FairPlay 秘密キー (.pfx) を格納する
Apple から受け取る秘密キー (.pfx) は、セキュリティで保護された証明書として扱われ、Azure Key Vault に格納できます。
.pfx 証明書ファイルは、管理者が最初に base 64 テキスト ファイルに変換する必要があります
変換後、このファイルはセキュリティで保護されたテキスト ファイルとして Azure DevOps Services に格納できます。
この文字列は、"シークレット オブジェクト" として、またはソリューションのデプロイ/ビルド スクリプトの一部として、Azure KeyVault に手動で格納できます。 Azure KeyVault に FairPlay プライベート証明書を格納する例は、Gridwich プロジェクトのサンプル コード
必要に応じて、.pfx ファイルのパスワードをシークレットとしてキー コンテナーに格納します。
CLI スクリプトの例
base64 でエンコードされた秘密キー ファイルを Azure KeyVault にコピーするには:
set -eu
echo key vault : $SHARED_KV_NAME
echo "Copying FairPlay certificate to key vault as secret"
az keyvault secret set --vault-name $SHARED_KV_NAME -n ams-fairPlay-certificate-b64 -f $(FairPlayCertificate.secureFilePath) --output none
サンプルを複製する
Media Services .Net サンプルを複製します。
git clone https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials.git
コードを変更する
.NET を使用して DRM を使用して Encrypt のコードを変更し、FairPlay 構成を追加します。
手記
Widevine は GovCloud リージョンでは使用できません。
前提 条件
Android デバイスで Widevine 用のオフライン DRM を実装する前に、まず次の作業を行う必要があります。
オフライン モードを有効にする
Widevine ライセンス オフライン モードを有効にするには、Widevine ライセンス テンプレート を構成します。 policy_overrides オブジェクトで、can_persist プロパティを true に設定します。これは、ConfigureWidevineLicenseTemplate に示されているようにします。
Android デバイス用のネイティブ プレーヤー アプリを開発する最も簡単な方法は、オープンソースのビデオ プレーヤー SDK Google ExoPlayer SDK を使用することです。 ExoPlayer は、MPEG-DASH や Microsoft Smooth Streaming 配信プロトコルなど、Android のネイティブ MediaPlayer API で現在サポートされていない機能をサポートしています。
ExoPlayer バージョン 2.6 以降には、オフライン Widevine DRM 再生をサポートする多くのクラスが含まれています。 特に、OfflineLicenseHelper
クラスには、オフライン ライセンスのダウンロード、更新、およびリリースに DefaultDrmSessionManager を使用するためのユーティリティ関数が用意されています。 SDK フォルダーに用意されているクラスは、オフライン ビデオ コンテンツのダウンロードをサポート library/core/src/main/java/com/google/android/exoplayer2/offline/
。
ExoPlayer SDK for Android のオフライン モードを容易にするクラスの一覧を次に示します。
library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java
library/core/src/main/java/com/google/android/exoplayer2/offline/SegmentDownloader.java
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloaderConstructorHelper.java
library/core/src/main/java/com/google/android/exoplayer2/offline/Downloader.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/offline/DashDownloader.java
開発者は、ExoPlayer 開発者ガイドの と、アプリケーションの開発中に対応する 開発者ブログ を参照する必要があります。
古い Android デバイスの操作
一部の古い Android デバイスでは、policy_overrides のプロパティ rental_duration_seconds 、playback_duration_seconds 、license_duration_seconds の値を設定する必要があります (Widevine ライセンス テンプレート で定義されています)。 または、0
に設定することもできます。これは、時間制限がないことを意味します。
警告
整数オーバーフローのバグを回避するには、値を設定する必要があります。 問題の詳細については、https://github.com/google/ExoPlayer/issues/3150 と https://github.com/google/ExoPlayer/issues/3112 を参照してください。 値を明示的に設定しない場合は、PlaybackDurationRemaining と LicenseDurationRemaining の非常に大きな値が割り当てられます (たとえば、9223372036854775807。これは 64 ビット整数の最大正の値です)。 その結果、Widevine ライセンスの有効期限が切れているように見えるので、復号化は行われません。 この問題は、Android 5.0 Lollipop 以降では発生しません。Android 5.0 は最初の Android バージョンであり、ARMv8 (Advanced RISC Machine ) と 64 ビット プラットフォームを完全にサポートするように設計されていますが、Android 4.4 KitKat はもともと他の古い Android バージョンと同様に ARMv7 および 32 ビット プラットフォームをサポートするように設計されているためです。
Android 用 Chrome プレーヤー アプリ
Chrome for Android v. 62 のリリース以降、EME での永続的なライセンスがサポートされています。 Widevine L1 は Chrome for Android でもサポートされるようになりました。 これにより、エンド ユーザーがこの (またはそれ以上の) バージョンの Chrome を使用している場合に、Chrome でオフライン再生アプリケーションを作成できます。
さらに、Google はプログレッシブ Web アプリ (PWA) サンプルを作成しました。
Android フォンでモバイル Chrome ブラウザーを v62 (以上) にアップグレードし、上記のホストされているサンプル アプリをテストすると、オンライン ストリーミングとオフライン再生の両方が機能することがわかります。
上記のオープンソース PWA アプリは、Node.jsで作成されています。 Ubuntu サーバーで独自のバージョンをホストする場合は、再生を妨げる可能性がある次の一般的な問題に注意してください。
CORS の問題: サンプル アプリのサンプル ビデオは、https://storage.googleapis.com/biograf-video-files/videos/ でホストされています。 Google は、Google Cloud Storage バケットでホストされているすべてのテスト サンプルに対して CORS を設定しています。 CORS ヘッダーと共に提供され、CORS エントリを明示的に指定します。https://biograf-155113.appspot.com
(google がサンプルをホストするドメイン) によって、他のサイトからのアクセスが禁止されます。 試行すると、次の HTTP エラーが表示されます: Failed to load https://storage.googleapis.com/biograf-video-files/videos/poly-sizzle-2015/mp4/dash.mpd: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https:\//13.85.80.81:8080' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
証明書の問題: Chrome v 58 以降では、Widevine の EME に HTTPS が必要です。 そのため、X509 証明書を使用して HTTPS 経由でサンプル アプリをホストする必要があります。 通常のテスト証明書は、次の要件のために機能しません。次の最小要件を満たす証明書を取得する必要があります。
Chrome と Firefox では、証明書 SAN-Subject 代替名の設定が存在する必要があります
証明書に信頼された CA が必要であり、自己署名開発証明書が機能しない
証明書には、Web サーバーまたはゲートウェイの DNS 名と一致する CN が必要です
H264/AAC のスムーズ ストリーミング ファイル形式には、PlayReady (AES-128 CTR) とのバインドがあります。 スムーズ ストリーミング形式の .ismv ファイルは、オーディオがビデオに多重化されていると仮定すると、そのファイル自体が fMP4 形式であり、再生に使用できます。 スムーズ ストリーミング コンテンツが PlayReady 暗号化を経由する場合、各 .ismv ファイルは PlayReady で保護された MP4 フラグメントになります。 優先ビットレートの .ismv ファイルを選択し、ダウンロード .mp4 として名前を変更できます。
プログレッシブ ダウンロード用に PlayReady で保護された MP4 をホストするには、次の 2 つのオプションがあります。
MP4 を同じコンテナー/メディア サービス資産に配置し、プログレッシブ ダウンロードに Azure Media Services ストリーミング エンドポイントを使用できます。
SAS URL は、Azure Storage から直接プログレッシブ ダウンロードするために使用できます。
PlayReady ライセンス配信には、次の 2 種類を使用できます。
Azure Media Services の PlayReady ライセンス配信サービス
任意の場所でホストされている PlayReady ライセンス サーバー。
AMS 配信サービスで PlayReady ライセンスを取得するには、Media Services v3 と PlayReady ライセンス テンプレートの を参照してください。
再生テストでは、Windows 10 のユニバーサル Windows アプリケーションを使用できます。 Windows 10 ユニバーサル サンプル には、アダプティブ ストリーミング サンプル という基本的なプレーヤー サンプルがあります。 ダウンロードしたビデオを選択するためのコードを追加し、アダプティブ ストリーミング ソースではなくソースとして使用します。
詳細については、FAQ の「 コンテンツ保護」を参照してください。
Widevine は、Google Inc. が提供するサービスであり、Google, Inc. の利用規約とプライバシー ポリシーに従います。
ヘルプとサポートを受ける
Media Services へ質問がある場合や、次のいずれかの方法で更新情報をフォローする場合には、以下をご利用ください。