
警告
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
,這表示沒有時間限制。
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)簽發,且自我簽署的開發憑證無法使用。
- 憑證的 CN 必須與 Web 伺服器或閘道路由器的 DNS 名稱相符
採用 H264/AAC 的 Smooth Streaming 檔案格式已與 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 的服務條款和隱私策略。
尋求協助與支援
您可以連絡媒體服務,詢問問題,或遵循下列其中一種方法來追蹤我們的更新: