Prasyarat
Sebelum Anda menerapkan DRM offline untuk FairPlay di perangkat iOS 10+:
- Membaca persyaratan dan konfigurasi lisensi Apple FairPlay
- Dapatkan FPS SDK dari Apple Developer Network. FPS SDK berisi dua komponen:
- FPS Server SDK, yang berisi Modul Keamanan Kunci (Key Security Module, KSM), sampel klien, spesifikasi, dan sekumpulan vektor pengujian.
- Paket Penyebaran FPS, yang berisi spesifikasi fungsi D, bersama dengan instruksi tentang cara menghasilkan kunci privat khusus pelanggan Sertifikat FPS, dan Kunci Rahasia Aplikasi. Apple hanya mengeluarkan Paket Penyebaran FPS kepada penyedia konten berlisensi.
- File sertifikat .der/.cer yang Anda terima sebagai bagian dari pembuatan sertifikat FPS berisi kunci publik dan dapat disediakan untuk klien. Kunci privat (.pfx) harus diamankan di Azure Key Vault atau lokasi aman yang lainnya.
Menyimpan Kunci Privat FairPlay (.pfx) di Azure Key Vault
Kunci privat (.pfx) yang Anda terima dari Apple harus diperlakukan sebagai sertifikat yang aman dan dapat disimpan di Azure Key Vault.
- File sertifikat .pfx harus terlebih dahulu dikonversi ke file teks base 64 oleh admin
- Setelah dikonversi, file ini dapat disimpan di Azure DevOps Services sebagai file teks yang aman.
- String kemudian dapat disimpan di Azure KeyVault secara manual sebagai "objek rahasia", atau sebagai bagian dari penyebaran/skrip build solusi Anda. Contoh penyimpanan sertifikat privat FairPlay di Azure KeyVault dapat dilihat dalam Kode sampel proyek Gridwich
- Secara opsional, Anda dapat menyimpan kata sandi file .pfx sebagai rahasia di brankas kunci.
Contoh skrip CLI
Untuk menyalin file kunci privat yang dikodekan base64 ke 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
Mengkloning sampel
Kloning sampel Media Services .Net.
git clone https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials.git
Mengubah kode
Ubah kode di Enkripsi dengan DRM menggunakan .NET untuk menambahkan konfigurasi FairPlay.
Catatan
Widevine tidak tersedia di wilayah GovCloud.
Prasyarat
Sebelum menerapkan DRM offline untuk Widevine di perangkat Android, Anda harus terlebih dahulu:
Aktifkan mode offline
Untuk mengaktifkan mode offline untuk lisensi Widevine, konfigurasikan templat lisensi Widevine. Di objek policy_overrides , atur properti can_persist ke true, seperti yang ditunjukkan di ConfigureWidevineLicenseTemplate.
Cara termudah mengembangkan aplikasi pemutar asli untuk perangkat Android adalah menggunakan Google ExoPlayer SDK, pemutar video sumber terbuka SDK. ExoPlayer mendukung fitur yang saat ini tidak didukung oleh MediaPlayer API asli Android, termasuk MPEG-DASH dan protokol pengiriman Microsoft Smooth Streaming.
ExoPlayer versi 2.6 dan yang lebih tinggi mencakup banyak kelas yang mendukung pemutaran DRM Widevine offline. Secara khusus, kelas ini OfflineLicenseHelper
menyediakan fungsi utilitas untuk memfasilitasi penggunaan DefaultDrmSessionManager untuk mengunduh, memperbarui, dan merilis lisensi offline. Kelas yang disediakan di folder library/core/src/main/java/com/google/android/exoplayer2/offline/
SDK mendukung pengunduhan konten video offline.
Daftar kelas berikut memfasilitasi mode offline di ExoPlayer SDK untuk Android:
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
Pengembang harus mereferensikan Panduan Pengembang ExoPlayer dan Blog Pengembang yang sesuai selama pengembangan aplikasi.
Bekerja dengan perangkat Android yang lebih lama
Untuk beberapa perangkat Android yang lebih lama, Anda harus menetapkan nilai untuk properti policy_overrides berikut (didefinisikan dalam template lisensi Widevine: rental_duration_seconds, playback_duration_seconds, dan license_duration_seconds. Atau, Anda dapat mengaturnya ke 0
, yang berarti tidak ada batasan waktu.
Peringatan
Nilai harus diatur untuk menghindari bug luapan bilangan bulat. Untuk penjelasan selanjutnya tentang masalah ini, lihat https://github.com/google/ExoPlayer/issues/3150 dan https://github.com/google/ExoPlayer/issues/3112.
Jika Anda tidak mengatur nilai secara eksplisit, nilai yang sangat besar untuk PlaybackDurationRemaining dan LicenseDurationRemaining akan ditetapkan, (misalnya, 9223372036854775807, yang merupakan nilai positif maksimum untuk bilangan bulat 64-bit ). Akibatnya, lisensi Widevine muncul kedaluwarsa dan oleh karena itu dekripsi tidak akan terjadi.
Masalah ini tidak terjadi pada Android 5.0 Lollipop atau yang lebih baru karena Android 5.0 adalah versi Android pertama, yang telah dirancang untuk sepenuhnya mendukung ARMv8 (Mesin RISC Lanjutan) dan platform 64-bit, sedangkan Android 4.4 KitKat awalnya dirancang untuk mendukung platform ARMv7 dan 32-bit seperti versi Android lama lainnya.
Menggunakan Xamarin untuk membuat aplikasi pemutaran Android
Anda dapat menemukan pengikatan data Xamarin untuk ExoPlayer menggunakan tautan berikut:
Selain itu, lihat utas berikut: pengikatan data Xamarin.
Aplikasi pemutar Chrome untuk Android
Dimulai dengan rilis Chrome untuk Android v. 62, lisensi yang persisten di EME didukung. Widevine L1 sekarang juga didukung di Chrome untuk Android. Ini memungkinkan Anda membuat aplikasi pemutaran offline di Chrome jika pengguna akhir Anda memiliki Chrome versi ini (atau lebih tinggi).
Selain itu, Google telah menghasilkan sampel Aplikasi Web Progresif (PWA):
Jika Anda meningkatkan browser Chrome seluler ke v62 (atau lebih tinggi) di ponsel Android dan menguji aplikasi sampel yang dihosting di atas, Anda akan melihat bahwa streaming online dan pemutaran offline berfungsi.
Aplikasi PWA open-source di atas ditulis dalam Node.js. Jika Anda ingin menghosting versi sendiri di server Ubuntu, ingatlah masalah umum yang dihadapi berikut ini yang dapat mencegah pemutaran:
- Masalah CORS: Sampel video di aplikasi sampel dihosting di https://storage.googleapis.com/biograf-video-files/videos/. Google telah menyiapkan CORS untuk semua sampel uji mereka yang dihosting di wadah Google Cloud Storage. Mereka dilayani dengan header CORS, menentukan secara eksplisit entri CORS:
https://biograf-155113.appspot.com
(domain di mana google menghosting sampel mereka) mencegah akses oleh situs lain. Jika Anda mencoba, Anda akan melihat kesalahan HTTP berikut: 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.
- Masalah sertifikat: Mulai dari Chrome v 58, EME untuk Widevine memerlukan HTTPS. Oleh karena itu, Anda perlu menghosting aplikasi sampel melalui HTTPS dengan sertifikat X509. Sertifikat uji yang biasa tidak berfungsi karena persyaratan berikut: Anda harus mendapatkan sertifikat yang memenuhi persyaratan minimum berikut:
- Chrome dan Firefox perlu pengaturan Nama Alternatif Subjek-SAN agar ada di sertifikat
- Sertifikat harus memiliki CA tepercaya dan sertifikat pengembangan yang ditandatangani sendiri tidak berfungsi
- Sertifikat harus memiliki CN yang cocok dengan nama DNS server web atau gateway
Format file (PIFF) streaming yang lancar dengan H264/AAC memiliki ikatan dengan PlayReady (AES-128 CTR). File .ismv streaming yang lancar, dengan asumsi audio di-mux dalam video, adalah fMP4 dan dapat digunakan untuk pemutaran. Jika konten streaming lancar melewati enkripsi PlayReady, setiap file .ismv menjadi fragmen MP4 yang dilindungi PlayReady. Anda dapat memilih file .ismv dengan laju bit pilihan dan mengganti namanya sebagai .mp4 untuk diunduh.
Ada dua opsi untuk meng-hosting MP4 yang dilindungi PlayReady untuk pengunduhan progresif:
- Anda dapat menempatkan MP4 dalam aset layanan kontainer/media yang sama dan menggunakan titik akhir streaming Azure Media Services untuk unduhan progresif.
- Anda dapat menggunakan URL SAS untuk mengunduh progresif langsung dari Azure Storage.
Anda dapat menggunakan dua jenis pengiriman lisensi PlayReady:
- Layanan pengiriman lisensi PlayReady di Azure Media Services
- Server lisensi PlayReady yang dihosting di mana saja.
Untuk mendapatkan lisensi PlayReady dengan layanan pengiriman AMS, lihat Templat lisensi Media Services v3 dengan PlayReady.
Untuk pengujian pemutaran, saya menggunakan Universal Windows Application di Windows 10. Dalam sampel Windows 10 Universal, ada sampel pemutar dasar yang bernama Sampel Streaming Adaptif. Tambahkan kode untuk memilih video yang diunduh dan gunakan sebagai sumbernya, alih-alih sumber streaming adaptif.