Önkoşullar
iOS 10+ cihazda FairPlay için çevrimdışı DRM uygulamadan önce:
-
Apple FairPlay lisans gereksinimlerini ve yapılandırmasını okuma
- FPS SDK'sını Apple Geliştirici Ağı'ndan edinin. FPS SDK'sı iki bileşen içerir:
- Anahtar Güvenlik Modülü (KSM), istemci örnekleri, belirtim ve test vektörleri kümesini içeren FPS Sunucusu SDK'sı.
- D işlevi belirtimini içeren FPS Dağıtım Paketi, FPS Sertifikası müşteriye özel özel anahtarı ve Uygulama Gizli Anahtarı oluşturma yönergeleri. Apple, FPS Dağıtım Paketi'ni yalnızca lisanslı içerik sağlayıcılarına dağıtıyor.
- FPS sertifikasının oluşturulmasının bir parçası olarak aldığınız .der/.cer sertifika dosyaları ortak bir anahtar içerir ve istemci tarafından kullanılabilir hale getirilebilir. Özel anahtar (.pfx) Azure Key Vault veya başka bir güvenli konumda güvenli hale getirilmelidir.
Azure Key Vault'da FairPlay Özel Anahtarı (.pfx) depolama
Apple'dan aldığınız özel anahtar (.pfx) güvenli bir sertifika olarak ele alınmalıdır ve Azure Key Vault depolanabilir.
- .pfx sertifika dosyası önce yönetici tarafından temel 64 metin dosyasına dönüştürülmelidir
- Dönüştürüldükten sonra, bu dosya güvenli bir metin dosyası olarak Azure DevOps Services depolanabilir.
- Dize daha sonra Azure KeyVault'ta el ile "gizli nesne" olarak veya çözümünüz için dağıtım/derleme betiğinin bir parçası olarak depolanabilir. FairPlay özel sertifikasını Azure KeyVault'ta depolama örneği Gridwich proje örnek kodunda görülebilir
- İsteğe bağlı olarak, .pfx dosyasının parolasını anahtar kasasında gizli dizi olarak depolayın.
Örnek CLI betiği
base64 kodlanmış özel anahtar dosyasını Azure KeyVault'a kopyalamak için:
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
Örneği
Media Services .Net örneklerini kopyalayın.
git clone https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials.git
Kodu değiştirir
FairPlay yapılandırmaları eklemek için DrM ile .NET kullanarak şifreleme bölümündeki kodu değiştirin.
Not
Widevine, GovCloud bölgesinde kullanılamaz.
Önkoşullar
Android cihazlarda Widevine için çevrimdışı DRM uygulamadan önce şunları yapmalısınız:
Çevrimdışı modu etkinleştirme
Widevine lisanslarında çevrimdışı modu etkinleştirmek için Widevine lisans şablonunu yapılandırın.
policy_overrides nesnesinde, ConfigureWidevineLicenseTemplate'da gösterildiği gibi can_persist özelliğini true olarak ayarlayın.
Android cihazlar için yerel oynatıcı uygulaması geliştirmenin en kolay yolu, açık kaynak video oynatıcı SDK'sı olan Google ExoPlayer SDK'sını kullanmaktır. ExoPlayer, MPEG-DASH ve Microsoft Kesintisiz Akış teslim protokolleri de dahil olmak üzere Android'in yerel MediaPlayer API'si tarafından şu anda desteklenmeyen özellikleri destekler.
ExoPlayer sürüm 2.6 ve üzeri, çevrimdışı Widevine DRM kayıttan yürütmeyi destekleyen birçok sınıf içerir. Özellikle, sınıfı çevrimdışı lisansları indirmek, OfflineLicenseHelper
yenilemek ve yayınlamak için DefaultDrmSessionManager kullanımını kolaylaştırmak için yardımcı işlevler sağlar. SDK klasöründe library/core/src/main/java/com/google/android/exoplayer2/offline/
sağlanan sınıflar çevrimdışı video içeriği indirmeyi destekler.
Aşağıdaki sınıf listesi Android için ExoPlayer SDK'sında çevrimdışı modu kolaylaştırır:
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
Geliştiriciler, bir uygulamanın geliştirilmesi sırasında ExoPlayer Geliştirici Kılavuzu'na ve ilgili Geliştirici Blogu'na başvurmalıdır.
Eski Android cihazlarla çalışma
Bazı eski Android cihazlarda, aşağıdaki policy_overrides özellikleri için değerler ayarlamanız gerekir ( Widevine lisans şablonunda tanımlanır: rental_duration_seconds, playback_duration_seconds ve license_duration_seconds. Alternatif olarak, bunları olarak 0
ayarlayabilirsiniz; başka bir deyişle zaman kısıtlaması yoktur.
Uyarı
Tamsayı taşması hatasını önlemek için değerlerin ayarlanması gerekir. Sorun hakkında daha fazla açıklama için bkz https://github.com/google/ExoPlayer/issues/3150 . ve https://github.com/google/ExoPlayer/issues/3112.
Değerleri açıkça ayarlamazsanız PlaybackDurationRemaining ve LicenseDurationRemaining için çok büyük değerler atanır (örneğin, 64 bit tamsayı için en büyük pozitif değer olan 9223372036854775807). Sonuç olarak Widevine lisansının süresi dolmuş gibi görünür ve bu nedenle şifre çözme işlemi gerçekleşmez.
Android 5.0 Lollipop veya sonraki sürümlerde bu sorun oluşmaz çünkü Android 5.0, ARMv8 (Gelişmiş RISC Makinesi) ve 64 bit platformları tam olarak desteklemek için tasarlanmış olan ilk Android sürümüdür, Android 4.4 KitKat ise başlangıçta diğer eski Android sürümlerinde olduğu gibi ARMv7 ve 32 bit platformları destekleyecek şekilde tasarlanmıştır.
Android kayıttan yürütme uygulaması oluşturmak için Xamarin kullanma
Aşağıdaki bağlantıları kullanarak ExoPlayer için Xamarin bağlamalarını bulabilirsiniz:
Ayrıca şu iş parçacığına bakın: Xamarin bağlaması.
Android için Chrome player uygulamaları
Android v. 62 için Chrome sürümünden itibaren EME'de kalıcı lisans desteklenir.
Widevine L1 artık Android için Chrome'da da destekleniyor. Bu, son kullanıcılarınız Chrome'un bu (veya daha yüksek) sürümüne sahipse Chrome'da çevrimdışı kayıttan yürütme uygulamaları oluşturmanıza olanak tanır.
Buna ek olarak, Google bir Aşamalı Web Uygulaması (PWA) örneği üretmiştir:
Mobil Chrome tarayıcınızı bir Android telefonda v62(veya üzeri) sürümüne yükseltip yukarıdaki barındırılan örnek uygulamayı test ederseniz hem çevrimiçi akışın hem de çevrimdışı kayıttan yürütmenin çalıştığını görürsünüz.
Yukarıdaki açık kaynak PWA uygulaması Node.js'da yazıldı. Kendi sürümünüzü bir Ubuntu sunucusunda barındırmak istiyorsanız, kayıttan yürütmeyi önleyebilecek aşağıdaki yaygın karşılaşılan sorunları göz önünde bulundurun:
- CORS sorunu: Örnek uygulamadaki örnek video içinde https://storage.googleapis.com/biograf-video-files/videos/barındırılır. Google, Google Cloud Storage demetinde barındırılan tüm test örnekleri için CORS'i ayarladı. CorS üst bilgileriyle sunulur ve cors girişi açıkça belirtilir:
https://biograf-155113.appspot.com
(Google'ın kendi örneğini barındırdığı etki alanı) diğer sitelerin erişimini engeller. Denerseniz aşağıdaki HTTP hatasını görürsünüz: 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.
- Sertifika sorunu: Chrome v 58'den başlayarak Widevine için EME https gerektirir. Bu nedenle, örnek uygulamayı X509 sertifikasıyla HTTPS üzerinden barındırmanız gerekir. Aşağıdaki gereksinimler nedeniyle normal bir test sertifikası çalışmıyor: Aşağıdaki minimum gereksinimleri karşılayan bir sertifika almanız gerekir:
- Chrome ve Firefox, sertifikada SAN-Subject Alternatif Ad ayarı olmasını gerektirir
- Sertifikanın güvenilir CA'sı olmalıdır ve otomatik olarak imzalanan bir geliştirme sertifikası çalışmaz
- Sertifika, web sunucusunun veya ağ geçidinin DNS adıyla eşleşen bir CN'ye sahip olmalıdır
H264/AAC ile kesintisiz akış (PIFF) dosya biçimi PlayReady (AES-128 CTR) ile bir bağlamaya sahiptir. Kesintisiz akış .ismv dosyası, sesin videoda muxed olduğunu varsayarsak, kendisi bir fMP4'dür ve kayıttan yürütme için kullanılabilir. Kesintisiz akış içeriği PlayReady şifrelemesi üzerinden geçerse, her .ismv dosyası PlayReady korumalı BIR MP4 parçası olur. Tercih edilen bit hızına sahip bir .ismv dosyası seçebilir ve .mp4 olarak yeniden adlandırabilirsiniz.
Aşamalı indirme için PlayReady korumalı MP4'ü barındırmak için iki seçenek vardır:
- MP4'ü aynı kapsayıcı/medya hizmeti varlığına yerleştirebilir ve aşamalı indirme için Azure Media Services akış uç noktasını kullanabilirsiniz.
- Doğrudan Azure Depolama'dan aşamalı indirme için SAS URL'sini kullanabilirsiniz.
İki tür PlayReady lisans teslimi kullanabilirsiniz:
- Azure Media Services'te PlayReady lisans teslim hizmeti
- Her yerde barındırılan PlayReady lisans sunucuları.
AMS teslim hizmetiyle PlayReady lisansı almak için Bkz. PlayReady ile Media Services v3 lisans şablonu.
Kayıttan yürütme testi için Windows 10'da Evrensel Windows Uygulaması kullanabilirsiniz.
Windows 10 Evrensel örneklerindeUyarlamalı Akış Örneği adlı temel bir oynatıcı örneği vardır. İndirilen videoyu seçmek için kodu ekleyin ve uyarlamalı akış kaynağı yerine kaynak olarak kullanın.