先決條件
在 iOS 10+ 裝置上實作適用於 FairPlay 的離線 DRM 之前:
- 閱讀 Apple FairPlay 授權需求和設定
- 從 Apple 開發人員網路取得 FPS SDK。 FPS SDK 包含兩個元件:
- FPS Server SDK,內含金鑰安全性模組 (KSM)、用戶端範例、規格,以及一組測試向量。
- FPS 部署套件,其中包含 D 函式規格,以及如何產生 FPS 憑證客戶專屬私鑰和應用程式秘密金鑰的指示。 Apple 只會將 FPS Deployment Pack 發給授權的內容提供者。
- 您在產生 FPS 憑證時收到的 .der/.cer 憑證檔案包含公鑰,而且可供用戶端使用。 私鑰 (.pfx) 應該在 Azure 金鑰保存庫 或其他安全位置受到保護。
在 Azure 金鑰保存庫 中儲存 FairPlay 私鑰 (.pfx)
您從 Apple 收到的私鑰 (.pfx) 應視為安全憑證,而且可以儲存在 Azure 金鑰保存庫 中。
- 系統管理員應該先將 .pfx 憑證檔案轉換成Base 64 文字檔
- 轉換之後,此檔案可以儲存在 Azure DevOps Services 為安全文本檔。
- 字串接著可以手動儲存在 Azure KeyVault 中作為「秘密物件」,或作為解決方案部署/建置腳本的一部分。 您可以在 Gridwich 專案範例程式代碼中看到將 FairPlay 私人憑證儲存在 Azure KeyVault 中的範例
- 或者,將 .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
複製範例
複製媒體服務 .Net 範例。
git clone https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials.git
修改程式碼
使用 .NET 修改使用DRM加密中的程式代碼,以新增 FairPlay 設定。
注意
GovCloud 區域中無法使用 Widevine。
先決條件
在 Android 裝置上實作適用於 Widevine 的離線 DRM 之前,您應該先:
啟用離線模式
若要啟用Widevine授權 的離線 模式,請設定 Widevine授權範本。 在 policy_overrides 物件中,將 can_persist 屬性設定為 true,如 ConfigureWidevineLicenseTemplate 所示。
若要開發適用於 Android 裝置的原生播放應用程式,最簡單的方法就是使用 Google ExoPlayer SDK \(英文\) 開放原始碼視訊播放程式 SDK。 ExoPlayer 支援目前 Android 的原生 MediaPlayer API 所不支援的功能,包括 MPEG-DASH 與 Microsoft Smooth Streaming 傳遞通訊協定。
ExoPlayer 2.6 版及更新版本包括許多支援離線 Widevine DRM 播放的類別。 特別是,類別 OfflineLicenseHelper
提供公用程式函式,以協助使用DefaultDrmSessionManager來下載、更新及發行離線授權。 SDK 資料夾中 library/core/src/main/java/com/google/android/exoplayer2/offline/
提供的類別支援離線影片內容下載。
以下列出的類別有助於在適用於 Android 的 ExoPlayer SDK 中提供離線模式:
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 屬性 (定義於 Widevine 授權範本) 設定值:rental_duration_seconds、playback_duration_seconds 及 license_duration_seconds。 或者,您可以將它們設定為 0
,這表示沒有時間限制。
使用 Xamarin 建置 Android 播放應用程式
您可以使用下列連結找到適用於 ExoPlayer 的 Xamarin 繫結:
此外,請參閱下列討論:Xamarin 繫結 \(英文\)。
適用於 Android 的 Chrome 播放應用程式
從適用於 Android v.62 的 Chrome 版本開始,EME 中的持續性授權受到支援。 適用於 Android 的 Chrome 現在也支援 Widevine L1 \(英文\)。 如果您的使用者具有此版本 (或更新版本) 的 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 (主體別名) 設定
- 憑證必須要有信任的 CA,自我簽署的開發憑證將不會有作用
- 憑證必須要有符合 Web 伺服器或閘道 DNS 名稱的 CN
具有 H264/AAC 的平滑串流 (PIFF) 檔格式具有 PlayReady (AES-128 CTR) 的系結。 假設音訊在視訊中多任務處理,則平滑串流 .ismv 檔案本身為 fMP4,可用於播放。 如果平滑串流內容通過 PlayReady 加密,則每個 .ismv 檔案都會變成 PlayReady 保護的 MP4 片段。 您可以選擇具有慣用比特率的 .ismv 檔案,並將其重新命名為下載 .mp4。
裝載受 PlayReady 保護的 MP4 以用於漸進式下載時有兩個選項可選擇:
- 您可以將 MP4 放在相同的容器/媒體服務資產中,並使用 Azure 媒體服務串流端點進行漸進式下載。
- 您可以使用 SAS URL 直接從 Azure 記憶體進行漸進式下載。
您可以使用兩種類型的 PlayReady 授權傳遞服務:
- Azure 媒體服務中的 PlayReady 授權傳遞服務
- 裝載在任何位置的 PlayReady 授權伺服器。
若要使用AMS傳遞服務取得 PlayReady 授權,請參閱 使用 PlayReady 授權範本的媒體服務 v3。
若要進行播放測試,您可以在 Windows 10 上使用通用 Windows 應用程式。 在 Windows 10 通用範例中,有一個名為彈性資料流樣本的基本播放器樣本。 新增程式代碼以選擇下載的視訊,並使用它作為來源,而不是調適型串流來源。