本文內容
警告
Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS 淘汰指南 。
當您的檢視者與因特網中斷連線時,可能需要將內容下載到其手機或平板電腦,才能播放。
在某些國家/地區,因特網可用性和/或頻寬仍然有限。 用戶可以選擇下載內容,以更高的解析度觀看內容。
某些內容提供者可能會禁止DRM授權傳遞超出國家/地區的邊界。 如果使用者需要出國旅遊,但仍想要觀看內容,則需要脫機下載。
Azure 媒體服務提供一組設計完善的 內容保護服務, Microsoft PlayReady、Google Widevine* 、Apple FairPlay Streaming 和 AES-128 加密。
注意
離線 DRM 只有在下載內容時,才會針對授權提出單一要求計費。 不會收取任何錯誤的費用。
先決條件
在 iOS 10+ 裝置上實作適用於 FairPlay 的離線 DRM 之前:
閱讀 Apple FairPlay 授權需求和設定
從 Apple Developer Network 取得 FPS SDK。 FPS SDK 包含兩個元件:
FPS 伺服器 SDK,其中包含金鑰安全性模組 (KSM)、用戶端範例、規格和一組測試向量。
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 中做為「秘密物件」,或做為解決方案部署/建置腳本的一部分。 您可以在 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 修改 Encrypt with 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-Subject 替代名稱設定,才能存在於憑證中
憑證必須具有受信任的CA,且自我簽署的開發憑證無法運作
憑證必須具有符合 Web 伺服器或閘道 DNS 名稱的 CN
具有 H264/AAC 的平滑串流檔格式具有 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 通用範例中,有一個稱為 Adaptive Streaming Sample 的基本播放機範例。 新增程式代碼以選擇下載的視訊,並將其作為來源使用,而不是自適性串流來源。
如需詳細資訊,請參閱常見問題中的 內容保護 。
Widevine 是 Google Inc. 提供的服務,並受限於 Google, Inc 的服務條款和隱私策略。
取得說明和支援
您可以連絡媒體服務,詢問問題,或遵循下列其中一種方法來追蹤我們的更新: