Előfeltételek
Mielőtt offline DRM-et implementálna a FairPlay-hez iOS 10+-eszközön:
- Az Apple FairPlay licenckövetelményei és konfigurációja
- Szerezze be az FPS SDK-t az Apple Developer Networkből. Az FPS SDK két összetevőt tartalmaz:
- Az FPS Server SDK, amely tartalmazza a kulcsbiztonsági modult (KSM), az ügyfélmintákat, a specifikációkat és a tesztvektorok készletét.
- Az FPS központi telepítési csomagja, amely tartalmazza a D függvény specifikációját, valamint az FPS-tanúsítvány ügyfélspecifikus titkos kulcsának és az alkalmazás titkos kulcsának létrehozásának utasításait. Az Apple csak licenccel rendelkező tartalomszolgáltatóknak bocsátja ki az FPS-telepítőcsomagot.
- Az FPS-tanúsítvány létrehozása során kapott .der/.cer tanúsítványfájlok nyilvános kulcsot tartalmaznak, és elérhetővé tehetők az ügyfél számára. A titkos kulcsot (.pfx) az Azure Key Vault vagy más biztonságos helyen kell védeni.
FairPlay titkos kulcs (.pfx) tárolása az Azure Key Vault
Az Apple-től kapott titkos kulcsot (.pfx) biztonságos tanúsítványként kell kezelni, és az Azure Key Vault tárolhatja.
- A .pfx-tanúsítványfájlt először 64-alapú szövegfájllá kell konvertálnia a rendszergazda
- A konvertálás után ez a fájl biztonságos szöveges fájlként tárolható az Azure DevOps Servicesben.
- A sztring ezután manuálisan tárolható az Azure KeyVaultban "titkos objektumként", vagy a megoldás üzembe helyezési/buildelési szkriptjének részeként. A FairPlay magántanúsítvány Azure KeyVaultban való tárolására egy példa látható a Gridwich-projekt mintakódjában
- A .pfx fájl jelszavát titkos kulcsként is tárolhatja a kulcstartóban.
Parancssori felületi példaszkript
A base64 kódolású titkos kulcsfájl másolása az Azure KeyVaultba:
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
A minta klónozása
Klónozza a Media Services .Net-mintákat.
git clone https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials.git
Módosítják a kódot
Módosítsa a kódot a Titkosítás DRM-sel a .NET használatával a FairPlay-konfigurációk hozzáadásához.
Megjegyzés
A Widevine nem érhető el a GovCloud régióban.
Előfeltételek
A Widevine-hez készült offline DRM androidos eszközökön történő implementálása előtt először a következőt kell elvégeznie:
Offline mód engedélyezése
A Widevine-licencek offline üzemmódjának engedélyezéséhez konfigurálja a Widevine-licencsablont. Az policy_overrides objektumban állítsa a can_persisttulajdonságot true (igaz) értékre, ahogy az a ConfigureWidevineLicenseTemplate című témakörben látható.
Az Android-eszközök natív lejátszóalkalmazásának fejlesztésének legegyszerűbb módja a Google ExoPlayer SDK, egy nyílt forráskódú videolejátszó SDK használata. Az ExoPlayer támogatja az Android natív MediaPlayer API által jelenleg nem támogatott funkciókat, beleértve az MPEG-DASH és a Microsoft Smooth Streaming kézbesítési protokolljait.
Az ExoPlayer 2.6-os és újabb verziója számos osztályt tartalmaz, amelyek támogatják az offline Widevine DRM-lejátszást. A osztály elsősorban OfflineLicenseHelper
segédprogramfüggvényeket biztosít a DefaultDrmSessionManager offline licencek letöltéséhez, megújításához és kiadásához. Az SDK mappában library/core/src/main/java/com/google/android/exoplayer2/offline/
megadott osztályok támogatják az offline videotartalmak letöltését.
Az alábbi osztályok listája megkönnyíti az offline módot az Androidhoz készült ExoPlayer SDK-ban:
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
A fejlesztőknek az alkalmazás fejlesztése során hivatkoznia kell az ExoPlayer fejlesztői útmutatójára és a megfelelő fejlesztői blogra .
Régebbi Android-eszközök használata
Néhány régebbi Android-eszköz esetében a következő policy_overrides tulajdonságok értékeit kell megadnia (a Widevine licencsablonban definiálva: rental_duration_seconds, playback_duration_seconds és license_duration_seconds. Másik lehetőségként beállíthatja őket a értékre 0
, ami azt jelenti, hogy nincs időkorlátozás.
Figyelmeztetés
Az értékeket úgy kell beállítani, hogy elkerüljék az egész szám túlcsordulását. A problémával kapcsolatos további magyarázatért lásd: https://github.com/google/ExoPlayer/issues/3150 és https://github.com/google/ExoPlayer/issues/3112.
Ha nem állítja be explicit módon az értékeket, nagyon nagy értékek lesznek hozzárendelve a PlaybackDurationRemaining és a LicenseDurationRemaining értékhez (például 9223372036854775807, amely egy 64 bites egész szám maximális pozitív értéke). Ennek eredményeképpen a Widevine-licenc lejártnak tűnik, ezért a visszafejtés nem fog megtörténni.
Ez a probléma nem fordul elő Az Android 5.0 Lollipop vagy újabb verziójában, mivel az Android 5.0 az első Android-verzió, amelyet az ARMv8 (Advanced RISC Machine) és a 64 bites platformok teljes körű támogatására terveztek, míg az Android 4.4 KitKat eredetileg az ARMv7 és a 32 bites platformok támogatására lett tervezve, mint a többi régebbi Android-verzió esetében.
Android-lejátszási alkalmazás létrehozása a Xamarin használatával
Az ExoPlayer Xamarin-kötéseit az alábbi hivatkozásokon találja:
Lásd még a következő szálat: Xamarin-kötés.
Chrome-lejátszóalkalmazások Androidhoz
Az Android 62-es verziójához készült Chrome kiadásától kezdve az EME állandó licence támogatott.
A Widevine L1 mostantól androidos Chrome-ban is támogatott. Így offline lejátszási alkalmazásokat hozhat létre a Chrome-ban, ha a végfelhasználók a Chrome ezen (vagy újabb) verziójával rendelkeznek.
Emellett a Google progresszív webalkalmazást (PWA) is készített:
Ha androidos telefonon frissíti a mobil Chrome böngészőt v62-re (vagy újabbra), és teszteli a fenti üzemeltetett mintaalkalmazást, látni fogja, hogy az online streamelés és az offline lejátszás is működik.
A fenti nyílt forráskódú PWA-alkalmazás Node.js. Ha saját verziót szeretne üzemeltetni egy Ubuntu-kiszolgálón, vegye figyelembe az alábbi gyakori problémákat, amelyek megakadályozhatják a lejátszást:
- CORS-probléma: A mintaalkalmazásban található mintavideó a következő helyen https://storage.googleapis.com/biograf-video-files/videos/található: . A Google beállította a CORS-t a Google Cloud Storage-gyűjtőben üzemeltetett tesztmintákhoz. A CORS-fejlécekkel vannak kiszolgálva, és explicit módon megadják a CORS-bejegyzést:
https://biograf-155113.appspot.com
(az a tartomány, amelyben a Google üzemelteti a mintát) megakadályozza a hozzáférést bármely más webhely számára. Ha megpróbálja, a következő HTTP-hiba jelenik meg: 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.
- Tanúsítványsal kapcsolatos probléma: A Chrome 58-tól kezdődően a Widevine-hez készült EME HTTPS-t igényel. Ezért a mintaalkalmazást HTTPS-en keresztül kell üzemeltetnie egy X509-tanúsítvánnyal. A szokásos teszttanúsítvány a következő követelmények miatt nem működik: A következő minimális követelményeknek megfelelő tanúsítványt kell beszereznie:
- A Chrome-ban és a Firefoxban SAN-Subject alternatív név beállításnak kell léteznie a tanúsítványban
- A tanúsítványnak megbízható hitelesítésszolgáltatóval kell rendelkeznie, és az önaláírt fejlesztési tanúsítvány nem működik
- A tanúsítványnak rendelkeznie kell a webkiszolgáló vagy az átjáró DNS-nevével egyező CN-sel
A H264/AAC zökkenőmentes streamelési (PIFF) fájlformátuma a PlayReady (AES-128 CTR) kötéssel rendelkezik. A smooth streaming .ismv fájl, feltéve, hogy a hang van muxed a videó, maga is egy fMP4, és használható a lejátszáshoz. Ha a zökkenőmentes streamelési tartalom PlayReady-titkosításon megy keresztül, minden .ismv fájl PlayReady által védett MP4-töredék lesz. Kiválaszthat egy .ismv fájlt az előnyben részesített bitrátával, és átnevezheti .mp4 letöltésre.
A PlayReady által védett MP4-et kétféleképpen lehet üzemeltetni a progresszív letöltéshez:
- Az MP4-et ugyanabban a tárolóban/médiaszolgáltatás-objektumban helyezheti el, és az Azure Media Services streamvégpontot használhatja a progresszív letöltéshez.
- Az SAS URL-címet használhatja a progresszív letöltéshez közvetlenül az Azure Storage-ból.
Kétféle PlayReady-licenckézbesítést használhat:
- PlayReady licenckézbesítési szolgáltatás az Azure Media Servicesben
- Bárhol üzemeltetett PlayReady-licenckiszolgálók.
Ha PlayReady-licencet szeretne beszerezni az AMS kézbesítési szolgáltatással, olvassa el a Media Services v3 with PlayReady licencsablont.
A lejátszás teszteléséhez használhat univerzális Windows-alkalmazást a Windows 10. A Windows 10 univerzális mintákban létezik egy adaptív streamelési minta nevű alapszintű lejátszóminta. Adja hozzá a letöltött videó kiválasztásához szükséges kódot, és használja forrásként az adaptív streamelési forrás helyett.