ApsaraVideo VOD dan ApsaraVideo Live menyediakan berbagai metode enkripsi video untuk melindungi konten Anda dari hotlinking, unduhan ilegal, dan distribusi tidak sah. Topik ini menjelaskan cara menggunakan SDK ApsaraVideo Player untuk memutar video yang dienkripsi dengan kriptografi privat Alibaba Cloud (enkripsi privat), enkripsi HLS, dan enkripsi DRM.
Ikhtisar enkripsi video
ApsaraVideo VOD menyediakan mekanisme keamanan konten komprehensif untuk melindungi video dari hotlinking, unduhan ilegal, dan distribusi tidak sah, mencakup kontrol akses, penandatanganan URL, otentikasi jarak jauh, enkripsi video, serta unduhan aman.
Untuk informasi lebih lanjut tentang kebijakan keamanan, lihat Ikhtisar. Topik ini menjelaskan cara memutar video yang dienkripsi menggunakan tiga metode enkripsi. Tabel berikut merinci ketiga metode tersebut yang dapat digunakan untuk mengenkripsi video.
Kebijakan keamanan | Metode | Manfaat | Tingkat keamanan | Kompleksitas penyebaran |
Enkripsi video | Kriptografi privat Alibaba Cloud | ApsaraVideo VOD menggunakan algoritma kriptografi privat untuk menyediakan solusi enkripsi video terintegrasi cloud-perangkat. Hal ini menjamin keamanan tautan transmisi. | Tinggi | Relatif rendah. Anda hanya perlu melakukan konfigurasi sederhana dan mengintegrasikan SDK ApsaraVideo Player. |
HTTP Live Streaming (HLS) encryption | Enkripsi HLS menggunakan AES-128 untuk mengenkripsi konten video dan mendukung semua pemutar yang kompatibel dengan HLS. Namun, kunci-kuncinya rentan dicuri. | Tinggi | Tinggi. Anda harus menyiapkan layanan manajemen kunci dan layanan penerbitan token. Selain itu, Anda harus memastikan keamanan tautan transmisi. | |
DRM komersial | Dukungan native untuk sistem DRM komersial, termasuk Apple FairPlay dan Google Widevine. Metode ini memberikan tingkat keamanan tinggi dan memenuhi persyaratan sebagian besar pemegang hak cipta. | Tinggi | Tinggi. Anda dikenai biaya berdasarkan jumlah panggilan lisensi (untuk DRM pihak ketiga, lihat standar penagihan yang berlaku). Anda hanya perlu mengintegrasikan SDK ApsaraVideo Player. |
Kompatibilitas SDK ApsaraVideo Player
Sebelum menggunakan SDK ApsaraVideo Player untuk Web guna memutar video terenkripsi, tinjau kompatibilitasnya dengan berbagai browser dan jenis enkripsi. Misalnya, SDK ApsaraVideo Player untuk Web dapat memutar video yang dienkripsi dengan kriptografi privat Alibaba Cloud pada browser seluler utama. Untuk informasi lebih lanjut, lihat Kompatibilitas browser dan Kompatibilitas fitur. Pada tabel berikut, ✔️ menunjukkan fitur didukung dan ❌ menunjukkan tidak didukung.
Untuk memastikan kompatibilitas, unduh versi terbaru SDK ApsaraVideo Player. Untuk mengunduh versi terbaru, lihat Ikhtisar SDK.
Catatan: HLS menggunakan format M3U8.
Klien | Metode pemutaran | Kriptografi privat (HLS) | Kriptografi berbasis lisensi (HLS) | Kriptografi berbasis lisensi (MP4) | Kriptografi privat (live FLV) | Enkripsi HLS | Alibaba Cloud DRM | DRM pihak ketiga |
Web | Pemutaran berbasis UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
Pemutaran berbasis VidAuth | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
Pemutaran berbasis VidSts | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | |
Streaming langsung berbasis UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | |
Streaming langsung berbasis LiveStsSource | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | |
Native (iOS/Android/Flutter) | Pemutaran berbasis UrlSource | ✔️ | ✔️ Memerlukan SDK ApsaraVideo Player v6.17.0 atau lebih baru. | ✔️ Memerlukan SDK ApsaraVideo Player v6.8.0 atau lebih baru. | ❌ | ✔️ | ❌ | ✔️ Memerlukan SDK ApsaraVideo Player v7.8.0 atau lebih baru. Tidak didukung di Flutter. |
Pemutaran berbasis VidAuth | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
Pemutaran berbasis VidSts | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ Tidak didukung di Flutter. | ❌ | |
Streaming langsung berbasis UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ Memerlukan SDK ApsaraVideo Player v7.8.0 atau lebih baru. Tidak didukung di Flutter. | |
Streaming langsung berbasis LiveStsSource | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ Tidak didukung di Flutter. | ❌ |
Ikhtisar enkripsi
Enkripsi video Alibaba Cloud (enkripsi privat)
Enkripsi Video Alibaba Cloud (Enkripsi Privat) mengenkripsi data video Anda. Video tetap terenkripsi bahkan setelah diunduh ke perangkat lokal, sehingga secara efektif mencegah distribusi sekunder berbahaya, kebocoran data, dan hotlinking tidak sah. Untuk informasi lebih lanjut, lihat Enkripsi Video Alibaba Cloud (Enkripsi Privat).
SDK Alibaba Cloud Player menangani logika dekripsi dan interaksi sisi server. Untuk mengaktifkan pemutaran terenkripsi dengan biaya rendah, Anda hanya perlu mengonfigurasi transkoding terenkripsi dan mengintegrasikan SDK.
Enkripsi Video Alibaba Cloud (Enkripsi Privat) adalah layanan gratis, tetapi Anda harus menggunakan transkoding media untuk mengaktifkan enkripsi. Transkoding dikenai biaya layanan. Untuk informasi lebih lanjut, lihat Penagihan transkoding media.
Konfigurasikan enkripsi privat
Untuk detail tentang mengonfigurasi Enkripsi Video Alibaba Cloud, lihat Panduan langkah demi langkah.
Batasan
Enkripsi Video Alibaba Cloud (Enkripsi Privat) mendukung enkripsi untuk video dalam format HLS, FLV, dan MP4. Anda hanya dapat memutar video ini dengan Alibaba Cloud Player. Klien web hanya mendukung pemutaran HLS. Klien native mendukung pemutaran untuk semua format tersebut.
Enkripsi video Alibaba Cloud (enkripsi privat berbasis lisensi)
Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) memperkuat keamanan Enkripsi Privat dan memungkinkan Anda memulai pemutaran langsung dari URL video terenkripsi. Hal ini meningkatkan kecepatan startup dan ideal untuk skenario video pendek dan drama pendek.
Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) adalah layanan gratis, tetapi Anda harus menggunakan transkoding media untuk mengaktifkan enkripsi. Transkoding dikenai biaya layanan. Untuk informasi lebih lanjut, lihat Penagihan transkoding media.
Konfigurasikan enkripsi privat berbasis lisensi
Untuk detail tentang mengonfigurasi Enkripsi Video Alibaba Cloud, lihat Panduan langkah demi langkah.
Batasan
Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) mendukung enkripsi untuk video dalam format HLS dan MP4. Anda hanya dapat memutar video terenkripsi ini dengan Alibaba Cloud Player.
Enkripsi standar HLS
Enkripsi Standar HLS menggunakan algoritma AES-128 untuk mengenkripsi konten video. Enkripsi ini kompatibel dengan semua pemutar HLS, termasuk yang dikembangkan sendiri dan open-source, sehingga menawarkan fleksibilitas tinggi. Namun, implementasinya lebih kompleks dan kurang aman dibandingkan metode privat. Untuk informasi lebih lanjut, lihat Enkripsi Standar HLS.
Enkripsi Standar HLS adalah layanan gratis, tetapi Anda harus menggunakan transkoding media untuk mengaktifkan enkripsi. Transkoding dikenai biaya layanan. Untuk informasi lebih lanjut, lihat Penagihan transkoding media.
Konfigurasikan Enkripsi Standar HLS
Untuk detail tentang mengonfigurasi Enkripsi Standar HLS, lihat Panduan integrasi.
Batasan
Enkripsi Standar HLS kompatibel dengan berbagai pemutar HLS, sehingga Anda dapat memilih pemutar yang Anda inginkan. Topik ini menggunakan Alibaba Cloud Player sebagai contoh untuk menunjukkan cara memutar video terenkripsi HLS. Alibaba Cloud Player mendukung pengiriman token. CDN secara dinamis menyesuaikan URI dekripsi dalam file manifest HLS, menambahkan token pengguna yang dapat diverifikasi oleh aplikasi Anda.
Enkripsi DRM Alibaba Cloud
ApsaraVideo VOD mendukung enkripsi Digital Rights Management (DRM) standar industri, menyediakan solusi satu atap untuk mengelola video berhak cipta. Enkripsi ini kompatibel dengan skema Widevine dan FairPlay. Untuk informasi lebih lanjut, lihat Enkripsi DRM.
Enkripsi DRM diterapkan selama proses transkoding. Pada tahap ini, hanya biaya transkoding media yang berlaku. Biaya enkripsi DRM berlaku ketika perangkat klien meminta lisensi untuk memutar video. Untuk detail penagihan, lihat Penagihan DRM.
Konfigurasikan enkripsi DRM
Anda dapat mengaktifkan fitur ini di Konsol ApsaraVideo Live dan ApsaraVideo VOD. Untuk detailnya, lihat Konfigurasikan enkripsi DRM untuk ApsaraVideo Live dan Konfigurasikan enkripsi DRM untuk ApsaraVideo VOD.
Batasan
Saat ini, Anda hanya dapat memutar video terenkripsi DRM dengan Alibaba Cloud Player.
Enkripsi DRM pihak ketiga
ApsaraVideo VOD mendukung enkripsi DRM pihak ketiga standar industri, memungkinkan alur kerja lengkap. Proses ini mencakup produksi video di ApsaraVideo for Media Processing, enkripsi oleh penyedia DRM pihak ketiga, hingga dekripsi dan pemutaran menggunakan SDK Alibaba Cloud Player.
Enkripsi DRM diterapkan selama proses transkoding. Pada tahap ini, hanya biaya transkoding media yang berlaku. Biaya enkripsi DRM berlaku ketika perangkat klien meminta lisensi untuk memutar video. Untuk detail penagihan, lihat Penagihan DRM.
Konfigurasikan enkripsi DRM
Anda dapat mengaktifkan fitur ini di Konsol ApsaraVideo for Media Processing. Untuk informasi lebih lanjut, lihat Live Packaging dan VOD Packaging.
Klien web
Sebelum menggunakan SDK ApsaraVideo Player untuk Web, tinjau kompatibilitas browser dan dukungan untuk memutar video yang menggunakan enkripsi privat Alibaba Cloud.
Mode H5 mendukung browser desktop dan seluler. Untuk detailnya, lihat Dukungan fitur.
Karena alasan keamanan, enkripsi privat Alibaba Cloud tidak mengizinkan Anda melakukan debugging dengan video terenkripsi asli.
Prosedur
Sisipkan pemutar web ke halaman web Anda untuk memutar video.
Ikuti panduan Mulai cepat untuk mengimpor SDK ApsaraVideo Player untuk Web ke halaman Anda.
Pilih metode enkripsi dan mulai pemutaran.
Kode berikut menunjukkan cara menyisipkan pemutar.
Enkripsi privat Alibaba Cloud
VOD (VidAuth)
Untuk memutar video yang dienkripsi dengan enkripsi privat Alibaba Cloud menggunakan metode ApsaraVideo VOD VidAuth, Anda juga harus meneruskan parameter encryptType: 1 untuk mengaktifkan enkripsi privat. Ini tidak diperlukan untuk memutar video standar.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>Kasus Uji Pemutaran Enkripsi Privat VOD</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
vid : '<your video ID>',// Wajib. ID video. Anda dapat menemukannya di Konsol ApsaraVideo VOD dengan memilih pustaka media > Audio/Video. Contoh: 1e067a2831b641db90d570b6480f****.
playauth : '<your PlayAuth>',// Wajib. Kredensial pemutaran. Anda dapat memperolehnya dengan memanggil operasi GetVideoPlayAuth.
encryptType: 1, // Wajib. Atur ke 1 saat memutar aliran dengan enkripsi privat. Parameter ini tidak diperlukan untuk kasus lain.
playConfig:{EncryptType:'AliyunVoDEncryption'}, // Wajib jika aliran M3U8 Anda juga berisi aliran lain yang tidak menggunakan enkripsi privat.
// authTimeout: 7200, // Opsional. Periode validitas URL pemutaran, dalam detik. Nilai ini menggantikan periode validitas penandatanganan URL yang diatur di Konsol ApsaraVideo VOD. Jika tidak ditentukan, nilai default adalah 7200. Jika diatur, pastikan nilainya melebihi durasi video untuk mencegah URL kedaluwarsa saat pemutaran.
},function(player){
console.log('Pemutar berhasil dibuat.')
});
</script>
</body>
</html>Live (LiveStsSource)
Untuk memutar aliran langsung yang menggunakan enkripsi privat dengan metode LiveStsSource, Anda harus menyediakan URL aliran dan kredensial sementara STS. Untuk informasi tentang cara menghasilkan kredensial, lihat Peroleh token STS.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>Kasus Uji Pemutaran Enkripsi Privat Langsung</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.35.6/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.35.6/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isLive: true, // Atur ke true untuk streaming langsung.
source: '<your live stream url>',// Wajib. URL pemutaran aliran langsung HLS dengan enkripsi privat.
accessKeyId: '<your AccessKey ID>',// Wajib. ID AccessKey dari pasangan kredensial sementara STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
accessKeySecret: '<your AccessKey Secret>',// Wajib. Rahasia AccessKey dari pasangan kredensial sementara STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
securityToken: '<your STS token>',// Wajib. Token keamanan STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
domain: '<your Domain>',// Wajib. Domain streaming untuk aliran langsung.
app:'<your App Name>',// Wajib. Nama Aplikasi untuk aliran langsung.
stream:'<your Stream Name>',// Wajib. NamaStream untuk aliran langsung asli, bukan aliran yang telah dikodekan ulang.
regionId: '<region of your video>',// Wajib. Wilayah layanan, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
useHls2: false,
},function(player){
console.log('Pemutar berhasil dibuat.')
});
</script>
</body>
</html>
Untuk memutar video on-demand terenkripsi di browser pada iOS versi sebelum 17.1, Anda harus menyebarkan skrip plugin pemutar tambahan. Ikuti langkah-langkah berikut:
Cara kerjanya: Pada iOS versi sebelum 17.1, enkripsi privat memerlukan plugin tambahan yang menggunakan teknologi Service Worker. Karena kebijakan keamanan browser, situs web hanya dapat mengakses skrip service worker dari sumber same-origin. Oleh karena itu, Anda harus menyebarkan skrip plugin pemutar ke domain yang sama dengan situs web Anda.
Unduh skrip: https://g.alicdn.com/apsara-media-box/imp-web-player/<version_number>/aliplayer-worker-min.js
Sebarkan skrip: Misalnya, jika situs web pemutaran video Anda adalah
https://www.aliyun.com/a/b.html, Anda harus menyebarkan skrip kehttps://www.aliyun.com/a/aliplayer-worker-min.js, yang berada di direktori yang sama dengan halaman web.Masukkan URL ini saat menginisialisasi pemutar:
new Aliplayer({ // ...parameter lainnya swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // Sediakan URL lengkap skrip plugin dan pastikan dapat diakses. })
Catatan: Pastikan versi pemutar persis sama dengan versi plugin.
Jika halaman web Anda berjalan dalam aplikasi iOS yang dikemas khusus, seperti uni-app, Anda harus menambahkan domain situs web Anda ke
WKAppBoundDomainsdalam fileInfo.plistaplikasi. Hal ini mengaktifkan fitur Service Worker diWKWebView. Untuk informasi lebih lanjut, lihat App-Bound Domains.
Enkripsi standar HLS
VOD (VidAuth)
Saat memutar video dengan enkripsi standar HLS menggunakan metode ApsaraVideo VOD VidAuth, jika video juga memiliki aliran lain yang tidak dienkripsi standar HLS atau aliran transkoding standar, Anda dapat mengatur parameter EncryptType ke HLSEncryption untuk memfilter dan hanya memutar aliran terenkripsi standar HLS.
let player = new Aliplayer({
id:'J_prismPlayer',
vid:'<your video ID>', // Wajib. ID video. Contoh: 1e067a2831b641db90d570b6480f****.
playauth:'<your PlayAuth>', // Wajib. Kredensial pemutaran video.
playConfig: { // Opsional.
MtsHlsUriToken: '', // Opsional. Jika Anda perlu memvalidasi MtsHlsUriToken (token pengguna), masukkan dalam parameter ini.
EncryptType: 'HLSEncryption', // Opsional. Jika Anda mengatur parameter ini ke HLSEncryption, hanya aliran dengan enkripsi standar HLS yang dikembalikan.
},
});VOD (VidSts)
Saat memutar video dengan enkripsi standar HLS menggunakan metode ApsaraVideo VOD VidSts, jika video juga memiliki aliran lain yang tidak dienkripsi standar HLS atau aliran transkoding standar, Anda dapat mengatur parameter EncryptType ke HLSEncryption untuk memfilter dan hanya memutar aliran terenkripsi standar HLS.
let player = new Aliplayer({
id: 'J_prismPlayer',
vid : '<your video ID>', // Wajib. ID video. Anda dapat memperoleh ID dari Konsol ApsaraVideo VOD (pustaka media > Audio/Video) atau dengan memanggil operasi API SearchMedia setelah video diunggah. Contoh: 1e067a2831b641db90d570b6480f****.
accessKeyId: '<your AccessKey ID>', // Wajib. ID AccessKey dari pasangan kredensial sementara STS, dikembalikan saat Anda menghasilkan token keamanan STS.
securityToken: '<your STS token>', // Wajib. Token keamanan STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
accessKeySecret: '<your AccessKey Secret>', // Wajib. Rahasia AccessKey dari pasangan kredensial sementara STS, dikembalikan saat Anda menghasilkan token keamanan STS.
region: '<region of your video>', // Wajib. Wilayah layanan, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
playConfig: { // Opsional.
MtsHlsUriToken: '', // Opsional. Jika Anda perlu memvalidasi MtsHlsUriToken (token pengguna), masukkan dalam parameter ini.
EncryptType: 'HLSEncryption', // Opsional. Jika Anda mengatur parameter ini ke HLSEncryption, hanya aliran dengan enkripsi standar HLS yang dikembalikan.
},
};UrlSource
Saat Anda memutar aliran langsung atau on-demand yang menggunakan enkripsi standar HLS dengan metode UrlSource, tidak diperlukan parameter tambahan. Konfigurasinya sama seperti memutar video standar.
let player = new Aliplayer({
id:'J_prismPlayer',
source:'<your play URL>', // URL pemutaran, bisa untuk aliran langsung atau on-demand.
isLive: true, // Atur ke true untuk streaming langsung.
});Enkripsi DRM
VOD (VidSts)
Untuk memutar video terenkripsi DRM menggunakan metode ApsaraVideo VOD VidSts, Anda juga harus meneruskan parameter isDrm: true.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>Kasus Uji Enkripsi DRM VOD</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isDrm: true,
vid: '<your video ID>',// Wajib. ID video. Anda dapat menemukannya di Konsol ApsaraVideo VOD dengan memilih pustaka media > Audio/Video. Contoh: 1e067a2831b641db90d570b6480f****.
accessKeyId: '<your AccessKey ID>',// Wajib. ID AccessKey dari pasangan kredensial sementara STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
securityToken: '<your STS token>',// Wajib. Token keamanan STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
accessKeySecret: '<your AccessKey Secret>',// Wajib. Rahasia AccessKey dari pasangan kredensial sementara STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
region: '<region of your video>', // Wajib. Wilayah layanan, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
certId: '<your certificate ID>', // Wajib untuk pemutaran di perangkat Apple. Gunakan parameter ini untuk meminta sertifikat Apple. Peroleh dari Konsol ApsaraVideo VOD atau ApsaraVideo Live, tergantung implementasi DRM Anda.
// authTimeout: 7200, // Opsional. Periode validitas URL pemutaran, dalam detik. Nilai ini menggantikan periode validitas penandatanganan URL yang diatur di Konsol ApsaraVideo VOD. Jika tidak ditentukan, nilai default adalah 7200. Jika diatur, pastikan nilainya melebihi durasi video untuk mencegah URL kedaluwarsa saat pemutaran.
},function(player){
console.log('Pemutar berhasil dibuat.')
});
</script>
</body>
</html>Live (LiveStsSource)
Untuk memutar aliran langsung terenkripsi DRM menggunakan metode LiveStsSource, berikan URL aliran dan kredensial sementara STS. Untuk informasi tentang cara menghasilkan kredensial sementara STS, lihat Peroleh token STS.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>Kasus Uji Enkripsi DRM Langsung</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isLive: true, // Atur ke true untuk streaming langsung.
isDrm: true,
source: '<your live stream url>',// Wajib. URL pemutaran aliran langsung terenkripsi DRM.
accessKeyId: '<your AccessKey ID>',// Wajib. ID AccessKey dari pasangan kredensial sementara STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
securityToken: '<your STS token>',// Wajib. Token keamanan STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
accessKeySecret: '<your AccessKey Secret>',// Wajib. Rahasia AccessKey dari pasangan kredensial sementara STS. Hasilkan ini dengan memanggil operasi STS AssumeRole.
region: '<region of your video>', // Wajib. Wilayah layanan, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
certId: '<your certificate ID>', // Wajib untuk pemutaran di perangkat Apple. Gunakan parameter ini untuk meminta sertifikat Apple. Peroleh dari Konsol ApsaraVideo VOD atau ApsaraVideo Live, tergantung implementasi DRM Anda.
},function(player){
console.log('Pemutar berhasil dibuat.')
});
</script>
</body>
</html>Android
Prosedur
Anda dapat mengintegrasikan SDK Alibaba Cloud Player untuk Android ke dalam aplikasi Anda untuk mengaktifkan pemutaran video. Bagian berikut menyediakan langkah-langkah dan kode contoh yang diperlukan.
Integrasikan SDK Alibaba Cloud Player untuk Android.
Untuk instruksinya, lihat Integrasikan SDK.
Buat pemutar untuk memutar video.
Untuk mempelajari cara membuat pemutar, lihat Fitur dasar. Untuk Langkah 3. Buat DataSource, pilih salah satu metode berikut untuk membuat sumber data sesuai kebutuhan Anda.
Enkripsi Video Alibaba Cloud (enkripsi privat)
Catatan penggunaan
Video HLS yang dienkripsi dengan Enkripsi Video Alibaba Cloud (enkripsi privat) dapat diputar menggunakan URL setelah ditranskode dengan templat transkoding. Sebelum mentranskode video, Anda harus mengikat lisensi di bawah akun yang sama. Untuk informasi lebih lanjut, lihat Kelola Lisensi. Kemudian, gunakan parameter EncryptType untuk membuat kelompok template transkoding. Kode berikut memberikan contoh:
Setelah membuat templat, jangan mengubah atau menyimpannya di konsol. Jika tidak, metode enkripsi akan ditimpa.
[{
"TranscodeTemplateId": "",
"TemplateName": "740P H.264 HLS enkripsi lokal",
"Type": "Normal",
"Container": {
"Format": "m3u8"
},
"TransConfig": {
"IsCheckReso": false,
"IsCheckResoFail": false,
"IsCheckVideoBitrate": false,
"IsCheckVideoBitrateFail": false,
"IsCheckAudioBitrate": false,
"IsCheckAudioBitrateFail": false
},
"Definition": "HD",
"MuxConfig": {
"Segment": {
"Duration": 5
}
},
"EncryptSetting": {
"EncryptType": "AliyunVoDLicenseEncryption"
},
"Video": {
"Height": 720,
"Bitrate": 400,
"Codec": "H.264",
"Fps": 25,
"Gop": 250,
"Profile": "high"
},
"Audio": {
"Bitrate": 64,
"Codec": "AAC",
"Channels": 2,
"Samplerate": "44100"
}
}]VidAuth
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan ApsaraVideo VOD VidAuth, jika video juga berisi aliran dengan jenis enkripsi lain atau aliran transkoding tidak terenkripsi, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk hanya memutar aliran terenkripsi privat.
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// Opsional. Jika Anda mengatur parameter ini ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("your_video_id");// Wajib. ID video.
vidAuth.setPlayAuth("<yourPlayAuth>");// Wajib. PlayAuth, dihasilkan dengan memanggil operasi ApsaraVideo VOD GetVideoPlayAuth.
vidAuth.setRegion("your_region");// Parameter ini tidak digunakan lagi di SDK pemutar V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menyelesaikannya. Untuk versi sebelumnya, parameter ini wajib. Ini menentukan wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// vidAuth.setAuthTimeout(3600); // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang diatur di Konsol ApsaraVideo VOD. Nilai default adalah 3600. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video untuk mencegah URL kedaluwarsa sebelum pemutaran selesai.
aliPlayer.setDataSource(vidAuth);VidSts
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan ApsaraVideo VOD VidSts, jika video juga berisi aliran dengan jenis enkripsi lain atau aliran transkoding tidak terenkripsi, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk hanya memutar aliran terenkripsi privat.
VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// Opsional. Jika Anda mengatur parameter ini ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("your_video_id");// Wajib. ID video.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib. ID AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setSecurityToken("<yourSecurityToken>");// Wajib. Token keamanan. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setRegion("your_region");// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// vidSts.setAuthTimeout(3600); // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang diatur di Konsol ApsaraVideo VOD. Nilai default adalah 3600. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video untuk mencegah URL kedaluwarsa sebelum pemutaran selesai.
aliPlayer.setDataSource(vidSts);LiveSts
Untuk memutar aliran langsung terenkripsi privat dalam format HLS atau FLV menggunakan objek ApsaraVideo Live LiveSts, Anda harus meneruskan URL dan kredensial STS, dan mengatur jenis enkripsi video ke AliEncryption. Kode berikut memberikan contoh:
Buat sumber data.
Anda harus meneruskan
LiveStssebagai sumber pemutaran.// Buat objek LiveSts dan atur EncryptionType ke AliEncryption. LiveSts liveSts = new LiveSts(); liveSts.setUrl("<your live stream url>");// Wajib. URL pemutaran aliran langsung HLS terenkripsi privat. liveSts.setAccessKeyId("<your AccessKey ID>");// Wajib. ID AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole. liveSts.setAccessKeySecret("<your AccessKey Secret>");// Wajib. Rahasia AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole. liveSts.setSecurityToken("<your STS token>");// Wajib. Token keamanan. Untuk memperolehnya, panggil operasi STS AssumeRole. liveSts.setDomain("<your Domain>");// Wajib. Domain streaming aliran langsung. liveSts.setApp("<your App Name>");// Wajib. Nama Aplikasi aliran langsung. liveSts.setStream("<your Stream Name>");// Wajib. NamaStream aliran langsung. liveSts.setEncryptionType(LiveSts.LiveEncryptionType.AliEncryption);// Wajib. Atur jenis enkripsi ke AliEncryption. liveSts.setRegion("<region of your video>");// Wajib. Wilayah layanan, seperti cn-shanghai. // Atur sumber pemutaran. aliPlayer.setDataSource(liveSts); // Siapkan untuk pemutaran. aliPlayer.prepare();Dengarkan pembatalan STS.
Selama pemutaran langsung terenkripsi, kunci enkripsi mungkin diputar. Saat rotasi kunci terjadi, pemutar menggunakan kredensial STS untuk meminta kunci baru. Anda harus memantau validitas kredensial STS karena kredensial yang tidak valid akan mengganggu pemutaran.
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { if(info is valid){ return IPlayer.StsStatus.Valid; } if(a valid STS credential can be obtained){ getSTS(); // Ini bisa asinkron atau sinkron. return IPlayer.StsStatus.Pending; } // Jika info tidak valid dan kredensial STS baru tidak dapat diperoleh, kami sarankan menghentikan pemutaran untuk mencegah output video rusak. mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });CatatanSetelah berhasil memperoleh kredensial STS baru, Anda harus memanggil metode
updateLiveStsInfountuk memperbaruinya. Jika gagal memperoleh kredensial baru, kami sarankan menghentikan pemutaran. Jika Anda tidak memperbarui kredensial STS, pemutar akan terus menggunakan yang lama untuk meminta kunci setelah kedaluwarsa. Jika kredensial STS menjadi tidak valid, hal ini dapat menyebabkan kegagalan pemutaran atau output video rusak.mAliyunVodPlayer.updateStsInfo(stsInfo);
Enkripsi privat berbasis lisensi Alibaba Cloud
Catatan penggunaan
Video HLS yang dienkripsi dengan Enkripsi Video Alibaba Cloud (enkripsi privat berbasis lisensi) dapat diputar menggunakan URL setelah ditranskode dengan templat transkoding. Sebelum mentranskode video, Anda harus mengikat lisensi di bawah akun yang sama. Untuk informasi lebih lanjut, lihat Kelola Lisensi. Kemudian, gunakan parameter EncryptType untuk membuat kelompok template transkoding. Kode berikut memberikan contoh:
Setelah membuat templat, jangan mengubah atau menyimpannya di konsol. Jika tidak, metode enkripsi akan ditimpa.
[{
"TranscodeTemplateId": "",
"TemplateName": "740P H.264 HLS enkripsi lokal",
"Type": "Normal",
"Container": {
"Format": "m3u8"
},
"TransConfig": {
"IsCheckReso": false,
"IsCheckResoFail": false,
"IsCheckVideoBitrate": false,
"IsCheckVideoBitrateFail": false,
"IsCheckAudioBitrate": false,
"IsCheckAudioBitrateFail": false
},
"Definition": "HD",
"MuxConfig": {
"Segment": {
"Duration": 5
}
},
"EncryptSetting": {
"EncryptType": "AliyunVoDLicenseEncryption"
},
"Video": {
"Height": 720,
"Bitrate": 400,
"Codec": "H.264",
"Fps": 25,
"Gop": 250,
"Profile": "high"
},
"Audio": {
"Bitrate": 64,
"Codec": "AAC",
"Channels": 2,
"Samplerate": "44100"
}
}]UrlSource
Hanya SDK Pemutar Alibaba Cloud untuk Android V6.8.0 dan yang lebih baru yang mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan UrlSource. Versi V6.17.0 dan yang lebih baru mendukung video HLS terenkripsi privat berbasis lisensi (bitrate tunggal dan bitrate adaptif).
Untuk memutar video terenkripsi privat berbasis lisensi dalam format HLS atau MP4 menggunakan UrlSource, panggil operasi GetPlayInfo untuk memperoleh URL pemutaran video. Untuk URL MP4, tambahkan etavirp_nuyila=1 ke URL sebelum meneruskannya ke pemutar. Anda dapat menempatkan parameter ini di mana saja dalam string kueri. Untuk HLS, Anda dapat menggunakan URL video asli. Konfigurasi SDK pemutar seperti untuk video standar; tidak diperlukan parameter tambahan.
Contoh URL pemutaran 1: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
Contoh URL pemutaran 2: https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// URL pemutaran
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
// Pemutar
UrlSource urlSource = new UrlSource();
urlSource.setUri(playURL);// Wajib. URL pemutaran video. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL.
aliPlayer.setDataSource(urlSource);
aliPlayer.prepare();
// Pemutar video pendek
AliListPlayer aliyunListPlayer = AliPlayerFactory.createAliListPlayer(getApplicationContext());
// Tambahkan UrlSource
aliyunListPlayer.addUrl(playURL,uid);
aliyunListPlayer.moveTo(uid);
// Pramuat
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");Enkripsi HLS standar
VidAuth
Saat memutar video yang menggunakan enkripsi HLS standar menggunakan ApsaraVideo VOD VidAuth, jika video juga berisi aliran lain yang tidak dienkripsi HLS standar atau aliran transkoding standar, Anda dapat mengatur jenis enkripsi ke HLSEncryption untuk hanya memutar aliran terenkripsi HLS standar. Kode berikut memberikan contoh:
Jika Anda mengaktifkan Rewrite file M3U8 enkripsi HLS standar, Anda harus memanggil setMtsHlsUriToken untuk mengatur token pengguna.
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// Opsional. Jika Anda mengatur parameter ini ke HLSEncryption, hanya aliran video terenkripsi HLS standar yang dikembalikan.
playerConfig.setMtsHlsUriToken("token");// Opsional. Masukkan parameter ini jika Anda ingin memvalidasi MtsHlsUriToken (token pengguna).
vidAuth.setPlayConfig(playerConfig);
vidAuth.setVid("your_video_id");// Wajib. ID video.
vidAuth.setPlayAuth("<yourPlayAuth>");// Wajib. PlayAuth, dihasilkan dengan memanggil operasi ApsaraVideo VOD GetVideoPlayAuth.
vidAuth.setRegion("your_region");// Parameter ini tidak digunakan lagi di SDK pemutar V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menyelesaikannya. Untuk versi sebelumnya, parameter ini wajib. Ini menentukan wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// vidAuth.setAuthTimeout(3600);// Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang diatur di Konsol ApsaraVideo VOD. Nilai default adalah 3600. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video untuk mencegah URL kedaluwarsa sebelum pemutaran selesai.
aliPlayer.setDataSource(vidAuth);VidSts
Saat memutar video yang menggunakan enkripsi HLS standar menggunakan ApsaraVideo VOD VidSts, jika video juga berisi aliran lain yang tidak dienkripsi HLS standar atau aliran transkoding standar, Anda dapat mengatur jenis enkripsi ke HLSEncryption untuk hanya memutar aliran terenkripsi HLS standar. Kode berikut memberikan contoh:
Jika Anda mengaktifkan Rewrite file M3U8 enkripsi HLS standar, Anda harus memanggil setMtsHlsUriToken untuk mengatur token pengguna.
VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//Opsional. Jika Anda mengatur parameter ini ke HLSEncryption, hanya aliran video terenkripsi HLS standar yang dikembalikan.
playerConfig.setMtsHlsUriToken("token");// Opsional. Masukkan parameter ini jika Anda ingin memvalidasi MtsHlsUriToken (token pengguna).
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("your_video_id");// Wajib. ID video.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib. ID AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setSecurityToken("<yourSecurityToken>");// Wajib. Token keamanan. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setRegion("your_region");// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// vidSts.setAuthTimeout(3600);// Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang diatur di Konsol ApsaraVideo VOD. Nilai default adalah 3600. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video untuk mencegah URL kedaluwarsa sebelum pemutaran selesai.
aliPlayer.setDataSource(vidSts);UrlSource
Saat memutar aliran yang menggunakan enkripsi HLS standar dengan UrlSource, konfigurasikan SDK pemutar seperti untuk video standar.
Kami sarankan menggunakan ApsaraVideo VOD. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran video dan meneruskannya ke pemutar.
Jika Anda mengaktifkan Rewrite file M3U8 enkripsi HLS standar, Anda harus menambahkan MtsHlsUriToken=<token> ke URL video sebelum meneruskannya ke pemutar. Anda dapat menempatkan parameter ini di mana saja dalam string kueri.
Contoh URL pemutaran asli: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Contoh URL untuk diteruskan ke pemutar: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
UrlSource urlSource = new UrlSource();
urlSource.setUri("playback_url");// URL pemutaran aliran langsung atau on-demand yang menggunakan enkripsi HLS standar.
aliPlayer.setDataSource(urlSource);Enkripsi DRM Alibaba Cloud
Di Android, kami sarankan menggunakan SurfaceView untuk memastikan pemutaran video yang memiliki tingkat keamanan tinggi berjalan dengan baik.
VidSts
Pertama, konfigurasikan enkripsi DRM seperti yang dijelaskan di Konfigurasikan enkripsi DRM untuk ApsaraVideo VOD. Saat memutar video terenkripsi DRM menggunakan ApsaraVideo VOD VidSts, konfigurasinya sama seperti video tidak terenkripsi. Tidak diperlukan parameter tambahan.
VidSts vidSts = new VidSts();
vidSts.setVid("your_video_id");// Wajib. ID video.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib. ID AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setSecurityToken("<yourSecurityToken>");// Wajib. Token keamanan. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setRegion("your_region");// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// vidSts.setAuthTimeout(3600); // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang diatur di Konsol ApsaraVideo VOD. Nilai default adalah 3600. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video untuk mencegah URL kedaluwarsa sebelum pemutaran selesai.
aliPlayer.setDataSource(vidSts);LiveSts
Pertama, konfigurasikan enkripsi DRM seperti yang dijelaskan di Konfigurasikan enkripsi DRM untuk ApsaraVideo Live. Untuk memutar aliran langsung terenkripsi DRM menggunakan objek LiveSts, Anda harus meneruskan URL dan kredensial STS, dan mengatur jenis enkripsi video ke WideVine_FairPlay. Kode berikut memberikan contoh:
Buat sumber data.
Anda harus meneruskan
LiveStssebagai sumber pemutaran.// Buat objek LiveSts dan atur EncryptionType ke WideVine_FairPlay. LiveSts liveSts = new LiveSts(); liveSts.setUrl("<your live stream url>");// Wajib. URL pemutaran aliran langsung HLS terenkripsi DRM. liveSts.setAccessKeyId("<your AccessKey ID>");// Wajib. ID AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole. liveSts.setAccessKeySecret("<your AccessKey Secret>");// Wajib. Rahasia AccessKey dari kredensial STS sementara. Untuk memperolehnya, panggil operasi STS AssumeRole. liveSts.setSecurityToken("<your STS token>");// Wajib. Token keamanan. Untuk memperolehnya, panggil operasi STS AssumeRole. liveSts.setDomain("<your Domain>");// Wajib. Domain streaming aliran langsung. liveSts.setApp("<your App Name>");// Wajib. Nama Aplikasi aliran langsung. liveSts.setStream("<your Stream Name>");// Wajib. NamaStream aliran langsung. liveSts.setEncryptionType(LiveSts.LiveEncryptionType.WideVine_FairPlay);// Wajib. Atur jenis enkripsi ke WideVine_FairPlay. liveSts.setRegion("<region of your video>");// Wajib. Wilayah layanan, seperti cn-shanghai. // Atur sumber pemutaran. aliPlayer.setDataSource(liveSts); // Siapkan untuk pemutaran. aliPlayer.prepare();Dengarkan pembatalan STS.
Selama pemutaran langsung terenkripsi, kunci enkripsi mungkin diputar. Saat rotasi kunci terjadi, pemutar menggunakan kredensial STS untuk meminta kunci baru. Anda harus memantau validitas kredensial STS karena kredensial yang tidak valid akan mengganggu pemutaran.
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { if(info is valid){ return IPlayer.StsStatus.Valid; } if(a valid STS credential can be obtained){ getSTS(); // Ini bisa asinkron atau sinkron. return IPlayer.StsStatus.Pending; } // Jika info tidak valid dan kredensial STS baru tidak dapat diperoleh, kami sarankan menghentikan pemutaran untuk mencegah output video rusak. mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });CatatanSetelah berhasil memperoleh kredensial STS baru, Anda harus memanggil metode
updateLiveStsInfountuk memperbaruinya. Jika gagal memperoleh kredensial baru, kami sarankan menghentikan pemutaran. Jika Anda tidak memperbarui kredensial STS, pemutar akan terus menggunakan yang lama untuk meminta kunci setelah kedaluwarsa. Jika kredensial STS menjadi tidak valid, hal ini dapat menyebabkan kegagalan pemutaran atau output video rusak.mAliyunVodPlayer.updateStsInfo(stsInfo);
Enkripsi DRM pihak ketiga
Fitur ini memerlukan SDK pemutar V7.8.0 atau lebih baru.
UrlSource
Fitur ini hanya mendukung skema DRM Widevine untuk protokol HLS dan DASH.
Pertama, lihat VOD packaging untuk mengonfigurasi enkripsi DRM. Saat memutar video terenkripsi DRM menggunakan metode UrlSource, selain konfigurasi untuk video biasa, Anda juga harus mengimplementasikan antarmuka DrmCallback untuk memperoleh informasi kunci video.
// Implementasikan antarmuka DrmCallback.requestKey untuk memperoleh kunci sesuai dokumentasi penyedia DRM pihak ketiga Anda.
// Contoh berikut menunjukkan cara mengambil kunci dari PallyCon. Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm.
player.setDrmCallback(new DrmCallback() {
@Override
public byte[] requestKey(byte[] data) {
// Minta informasi kunci menggunakan permintaan HTTP POST, sesuai kebutuhan penyedia DRM.
String licenseUrl = "https://license-global.pallycon.com/ri/licenseManager.do";
String[] header = {
// Ganti TOKEN_ID dengan milik Anda sendiri.
"pallycon-customdata-v2: TOKEN_ID"
};
// Hindari memblokir thread ini terlalu lama.
byte[] response = async_http_post(licenseUrl, header, data);
if (response != null) {
// Jika response_format token diatur ke 'original', kembalikan respons langsung. Jika tidak, Anda harus mengurai respons sebelum mengembalikannya.
// Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm/license/license-token/#token-json.
// Format dan struktur respons dapat sangat berbeda antar penyedia. Tinjau dengan cermat. Jika respons tidak dapat digunakan untuk dekripsi, pemutar melaporkan kesalahan melalui callback onError.
return response;
} else {
// Tangani pengecualian. Pemutar memanggil onError dan melaporkan kesalahan terkait.
return null;
}
}
});iOS
Prosedur
Anda dapat mengintegrasikan SDK Pemutar untuk iOS ke dalam aplikasi Anda untuk mengaktifkan pemutaran video. Prosedur dan kode contohnya adalah sebagai berikut:
Integrasikan SDK Pemutar untuk iOS.
Untuk informasi lebih lanjut, lihat Integrasikan SDK.
Buat pemutar untuk memuat dan memutar video.
Untuk membuat pemutar, lihat Fitur Dasar. Pada Langkah 3. Buat sumber data, buat sumber data menggunakan salah satu metode berikut sesuai kebutuhan bisnis Anda.
Enkripsi privat Alibaba Cloud
VidAuth untuk VOD
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VidAuth ApsaraVideo VOD, jika video juga memiliki aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi ke AliyunVoDEncryption untuk hanya memutar aliran terenkripsi privat.
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Your video ID"; // Wajib. ID video.
authSource.playAuth = @"<yourPlayAuth>"; // Wajib. Kredensial pemutaran. Anda dapat memperoleh kredensial ini dengan memanggil operasi GetVideoPlayAuth ApsaraVideo VOD.
authSource.region = @"Your region"; // Parameter ini tidak digunakan lagi di SDK Pemutar V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menguraikannya. Untuk versi SDK sebelum 5.5.5.0, parameter ini wajib. Ini menentukan wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// authSource.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang dikonfigurasi di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
// Bangun konfigurasi menggunakan VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
authSource.playConfig = [config generatePlayerConfig];
[self.player setAuthSource:authSource];VidSts untuk VOD
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VidSts ApsaraVideo VOD, jika video juga memiliki aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi ke AliyunVoDEncryption untuk hanya memutar aliran terenkripsi privat.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Your region"; // Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
source.vid = @"Your video ID"; // Wajib. ID video.
source.securityToken = @"<yourSecurityToken>"; // Wajib. Token keamanan. Anda dapat memperoleh token ini dengan memanggil operasi AssumeRole STS.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Wajib. Rahasia AccessKey dari kredensial STS sementara. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari kredensial STS sementara. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
// source.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang dikonfigurasi di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
// Bangun konfigurasi menggunakan VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
source.playConfig = [config generatePlayerConfig];
// Atur sumber pemutaran.
[self.player setStsSource:source];LiveStsSource untuk siaran langsung
Untuk memutar aliran langsung terenkripsi privat dalam format HLS atau FLV menggunakan metode LiveStsSource, Anda harus menyediakan URL aliran dan kredensial STS, dan mengatur jenis enkripsi video ke ENCRYPTION_TYPE_ALIVODENCRYPTION. Kode berikut memberikan contoh:
Buat sumber data.
Anda harus meneruskan
AVPLiveStsSourcesebagai sumber pemutaran.// Buat objek LiveSts dan atur encryptionType ke ENCRYPTION_TYPE_ALIVODENCRYPTION. AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"Encrypted live stream URL" accessKeyId:@"Temporary AccessKey ID" accessKeySecret:@"Temporary AccessKey secret" securityToken:@"Security token" region:@"Region value" domain:@"Streaming domain for the URL" app:@"Application name for streaming" stream:@"Stream name for streaming" encryptionType:ENCRYPTION_TYPE_ALIVODENCRYPTION];// Wajib. Atur jenis enkripsi ke ENCRYPTION_TYPE_ALIVODENCRYPTION. // Atur sumber pemutaran. [self.aliPlayer setLiveStsSource:liveStsSource]; ...... // Siapkan untuk pemutaran. [self.aliPlayer prepare];Dengarkan kedaluwarsa kredensial STS.
Selama pemutaran langsung terenkripsi, kunci enkripsi mungkin diputar. Saat hal ini terjadi, pemutar menggunakan kredensial STS untuk meminta kunci baru. Anda harus memantau validitas kredensial karena kredensial yang tidak valid akan mengganggu pemutaran.
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info is valid) { return Valid; } if (a valid STS credential can be obtained) { getSTS(); // Ini bisa berupa operasi asinkron atau sinkron. return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];CatatanSetelah memperoleh kredensial STS baru, Anda harus memanggil metode
updateLiveStsInfountuk memperbaruinya. Jika upaya memperoleh kredensial baru gagal, kami sarankan Anda menghentikan pemutaran. Jika Anda tidak memperbarui kredensial STS, pemutar akan mencoba menggunakan kredensial yang kedaluwarsa untuk meminta kunci, yang dapat menyebabkan artefak layar atau kegagalan pemutaran.[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Enkripsi privat berbasis lisensi Alibaba Cloud
UrlSource untuk VOD
Hanya SDK Pemutar untuk iOS V6.8.0 dan yang lebih baru yang mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan UrlSource. V6.17.0 dan yang lebih baru mendukung video HLS terenkripsi privat berbasis lisensi dengan bitrate tunggal dan adaptif.
Untuk memutar video HLS atau MP4 terenkripsi privat berbasis lisensi menggunakan metode UrlSource, Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran video. Setelah memperoleh URL video, Anda harus menambahkan parameter etavirp_nuyila=1 ke URL sebelum meneruskannya ke pemutar. Anda dapat menempatkan parameter ini di mana saja dalam string kueri. Parameter ini hanya diperlukan untuk video MP4. Untuk video HLS, Anda dapat menggunakan URL video asli. Konfigurasi pemutar sama seperti untuk memutar video standar. Tidak diperlukan parameter tambahan.
Contoh URL pemutaran 1: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
Contoh URL pemutaran 2: https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// URL pemutaran
NSString *playURL = @"https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
// Pemutar
AliPlayer *player = [[AliPlayer alloc] init];
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:playURL]; // Wajib. URL pemutaran video. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL. Untuk video MP4, Anda harus menambahkan `etavirp_nuyila=1` ke URL. Contoh: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
[player setUrlSource:urlSource];
[player prepare];
// Pemutar daftar
AliListPlayer *listPlayer = [[AliListPlayer alloc] init];
[listPlayer addUrlSource:playURL uid:UUIDString];
[listPlayer moveTo:@"uid"];
// Pramuat
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];Enkripsi standar HLS
VidAuth untuk VOD
Saat memutar video yang dienkripsi menggunakan enkripsi standar HLS dengan metode VidAuth ApsaraVideo VOD, jika video juga memiliki aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi ke HLSEncryption untuk hanya memutar aliran dengan enkripsi standar HLS. Kode berikut memberikan contoh:
Jika Anda mengaktifkan Penulisan ulang enkripsi standar M3U8, Anda harus memanggil setHlsUriToken untuk mengatur token pengguna.
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Your video ID"; // Wajib. ID video.
authSource.playAuth = @"<yourPlayAuth>"; // Wajib. Kredensial pemutaran. Anda dapat memperoleh kredensial ini dengan memanggil operasi GetVideoPlayAuth ApsaraVideo VOD.
authSource.region = @"Your region"; // Parameter ini tidak digunakan lagi di SDK Pemutar V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menguraikannya. Untuk versi SDK sebelum 5.5.5.0, parameter ini wajib. Ini menentukan wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
// authSource.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang dikonfigurasi di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
// Bangun konfigurasi menggunakan VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // Opsional. Jika Anda mengatur parameter ini ke HLSEncryption, hanya aliran video yang dienkripsi menggunakan enkripsi standar HLS yang dikembalikan.
[config setHlsUriToken: @"token"]; // Opsional. Gunakan parameter ini untuk meneruskan MtsHlsUriToken (token pengguna) untuk verifikasi.
source.playConfig = [config generatePlayerConfig];
// Atur sumber pemutaran.
[self.player setAuthSource:authSource];VidSts untuk VOD
Saat memutar video yang dienkripsi menggunakan enkripsi standar HLS dengan metode VidSts ApsaraVideo VOD, jika video juga memiliki aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi ke HLSEncryption untuk hanya memutar aliran dengan enkripsi standar HLS. Kode berikut memberikan contoh:
Jika Anda mengaktifkan Penulisan ulang enkripsi standar M3U8, Anda harus memanggil setHlsUriToken untuk mengatur token pengguna.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Your video ID"; // Wajib. ID video.
source.region = @"Your region"; // Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
source.securityToken = @"<yourSecurityToken>"; // Wajib. Token keamanan. Anda dapat memperoleh token ini dengan memanggil operasi AssumeRole STS.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Wajib. Rahasia AccessKey dari kredensial STS sementara. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari kredensial STS sementara. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
// source.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang dikonfigurasi di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
// Bangun konfigurasi menggunakan VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // Opsional. Jika Anda mengatur parameter ini ke HLSEncryption, hanya aliran video yang dienkripsi menggunakan enkripsi standar HLS yang dikembalikan.
[config setHlsUriToken: @"token"]; // Opsional. Gunakan parameter ini untuk meneruskan MtsHlsUriToken (token pengguna) untuk verifikasi.
source.playConfig = [config generatePlayerConfig];
// Atur sumber pemutaran.
[self.player setStsSource:source];UrlSource
Saat menggunakan metode UrlSource untuk memutar aliran dengan enkripsi standar HLS, konfigurasi pemutar sama seperti untuk memutar video standar. Tidak diperlukan parameter tambahan.
Kami sarankan Anda menggunakan ApsaraVideo VOD. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran video dan meneruskan URL tersebut ke pemutar.
Jika Anda mengaktifkan Penulisan ulang enkripsi standar M3U8, Anda harus menambahkan MtsHlsUriToken=<token> ke URL video sebelum meneruskannya ke pemutar. Anda dapat menempatkan parameter ini di mana saja dalam string kueri.
Contoh URL pemutaran asli: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Contoh URL untuk dimasukkan ke pemutar: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; // URL pemutaran aliran langsung atau on-demand dengan enkripsi standar HLS.
[self.player setUrlSource:urlSource];Enkripsi DRM Alibaba Cloud
Di platform iOS, Anda harus melakukan panggilan global satu kali ke metode setFairPlayCertID di AliPlayerGlobalSettings sebelum [self.player prepare] untuk mengatur ID sertifikat. Anda dapat memperoleh ID sertifikat di Konsol ApsaraVideo VOD > Manajemen Konfigurasi > Konfigurasi Pemrosesan Media > Manajemen Sertifikat DRM.
[AliPlayerGlobalSettings setFairPlayCertID:@"Your certificate ID obtained from the console"];VidSts untuk VOD
Pertama, lihat Konfigurasikan Enkripsi DRM untuk VOD untuk mengonfigurasi enkripsi DRM. Saat memutar video terenkripsi DRM menggunakan metode VidSts ApsaraVideo VOD, konfigurasinya sama seperti untuk memutar video standar. Tidak diperlukan parameter tambahan.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Your region"; // Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
source.vid = @"Your video ID"; // Wajib. ID video.
source.securityToken = @"<yourSecurityToken>"; // Wajib. Token keamanan. Anda dapat memperoleh token ini dengan memanggil operasi AssumeRole STS.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Wajib. Rahasia AccessKey dari kredensial STS sementara. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari kredensial STS sementara. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
// source.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menggantikan periode validitas otentikasi URL yang dikonfigurasi di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
// Atur sumber pemutaran.
[self.player setStsSource:source]LiveStsSource untuk siaran langsung
Pertama, lihat Konfigurasikan Enkripsi DRM untuk Streaming Langsung untuk mengonfigurasi enkripsi DRM. Untuk memutar aliran langsung terenkripsi DRM menggunakan metode LiveStsSource, Anda harus menyediakan URL aliran dan kredensial STS, dan mengatur jenis enkripsi video ke ENCRYPTION_TYPE_FAIRPLAY. Kode berikut memberikan contoh:
Buat sumber data.
Anda harus meneruskan
AVPLiveStsSourcesebagai sumber pemutaran.// Buat objek LiveSts dan atur encryptionType ke ENCRYPTION_TYPE_FAIRPLAY. AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"Encrypted live stream URL" accessKeyId:@"Temporary AccessKey ID" accessKeySecret:@"Temporary AccessKey secret" securityToken:@"Security token" region:@"Region value" domain:@"Streaming domain for the URL" app:@"Application name for streaming" stream:@"Stream name for streaming" encryptionType:ENCRYPTION_TYPE_FAIRPLAY];// Wajib. Atur jenis enkripsi ke ENCRYPTION_TYPE_FAIRPLAY. // Atur sumber pemutaran. [self.aliPlayer setLiveStsSource:liveStsSource]; ...... // Siapkan untuk pemutaran. [self.aliPlayer prepare];Dengarkan pembatalan kredensial STS.
Selama pemutaran langsung terenkripsi, kunci enkripsi mungkin diputar. Saat hal ini terjadi, pemutar menggunakan kredensial STS untuk meminta kunci baru. Anda harus memantau validitas kredensial karena kredensial yang tidak valid akan mengganggu pemutaran.
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info is valid){ return Valid; } if(a valid STS credential can be obtained){ getSTS(); // Ini bisa berupa operasi asinkron atau sinkron. return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];CatatanSetelah memperoleh kredensial STS baru, Anda harus memanggil metode
updateLiveStsInfountuk memperbaruinya. Jika upaya memperoleh kredensial baru gagal, kami sarankan Anda menghentikan pemutaran. Jika Anda tidak memperbarui kredensial STS, pemutar akan mencoba menggunakan kredensial yang kedaluwarsa untuk meminta kunci, yang dapat menyebabkan artefak layar atau kegagalan pemutaran.[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Enkripsi DRM pihak ketiga
Fitur ini memerlukan SDK Pemutar V7.8.0 atau lebih baru.
Anda harus menggunakan AppleAVPlayer untuk memutar video terenkripsi FairPlay. Sebelum pemutaran dimulai, panggil
[self.player setPreferPlayerName:@"AppleAVPlayer"]untuk mengganti inti pemutar. Saat memutar video yang tidak dienkripsi DRM, Anda harus memanggil[self.player setPreferPlayerName:@""]untuk mengembalikan inti default.
UrlSource untuk FairPlay
Hanya skema FairPlay melalui protokol HLS yang didukung.
Pertama, lihat Live Packaging untuk mengonfigurasi enkripsi DRM. Saat memutar video terenkripsi DRM menggunakan metode UrlSource, selain menggunakan konfigurasi yang sama seperti untuk video biasa, Anda juga harus mengimplementasikan antarmuka AVPDrmDelegate untuk memperoleh sertifikat FairPlay dan kunci video.
@interface SimplePlayerViewController()<AVPDrmDelegate>
@end
- (void)viewDidLoad {
self.player = [[AliPlayer alloc] init];
self.player.playerView = self.avpPlayerView.playerView;
self.player.drmDelegate = self;
if(the current URL is for a third-party DRM video){
[self.player setPreferPlayerName:@"AppleAVPlayer"];
}
//...
}
// Implementasikan antarmuka AVPDrmDelegate.requestCert dan requestKey. Peroleh sertifikat dan kunci sesuai dokumentasi dari penyedia DRM pihak ketiga Anda.
// Contoh berikut menunjukkan cara memperoleh sertifikat dan kunci dari PallyCon. Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm.
#pragma mark AVPDrmDelegate
- (NSData *)requestCert:(AliPlayer *)player {
// Anda juga dapat mengambil dan menyimpan cache sertifikat sebelumnya untuk mengurangi latensi startup. Jika demikian, kembalikan sertifikat yang di-cache di sini.
// Jika data sertifikat tidak valid, pemutar melaporkan kesalahan. Anda juga dapat memeriksa konsol untuk informasi kesalahan lebih lanjut.
// Ganti SITE_ID dengan ID situs Anda sendiri.
const char* url = "https://license.pallycon.com/ri/fpsKeyManager.do?siteId=SITE_ID";
// Minta sertifikat FairPlay menggunakan permintaan HTTP GET sesuai kebutuhan penyedia DRM.
// Hindari memblokir thread ini terlalu lama.
NSData* responseData = [self performAsyncHttpGet:url];
if (!responseData) {
// Tangani pengecualian. Pemutar akan melaporkan kesalahan.
return nil;
}
// Data respons harus didekode Base64 sebelum dikembalikan ke pemutar.
NSString *base64String = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
return [self decodeBase64String:base64String];
}
- (NSData *)requestKey:(AliPlayer *)player data:(NSData *)data {
// Minta informasi kunci menggunakan permintaan HTTP POST sesuai kebutuhan penyedia DRM.
NSString *urlString = [NSString stringWithFormat:@"https://license-global.pallycon.com/ri/licenseManager.do"];
const char *url = [urlString UTF8String];
// Ganti TOKEN_ID dengan ID token Anda sendiri.
NSString *headerString = [NSString stringWithFormat:@"pallycon-customdata-v2: TOKEN_ID"];
const char* headers[] = {
[headerString UTF8String]
};
int headerCount = sizeof(headers) / sizeof(headers[0]);
// Hindari memblokir thread ini terlalu lama.
NSData* responseData = [self performAsyncHttpPost:url
headers:headers
headerCount:headerCount
data:data];
if (!responseData) {
// Tangani pengecualian. Pemutar akan melaporkan kesalahan.
return nil;
}
// Jika response_format token Anda diatur ke `original`, kembalikan respons langsung. Jika tidak, Anda harus mengurai respons sebelum mengembalikannya.
// Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm/license/license-token/#token-json.
// Format dan struktur respons dapat sangat berbeda antar penyedia. Periksa respons dengan cermat. Jika respons tidak dapat digunakan untuk dekripsi, pemutar melaporkan kesalahan.
return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}Klien Flutter
Klien Flutter tidak mendukung enkripsi DRM.
Prosedur
Anda dapat mengintegrasikan pemutar Flutter ke dalam aplikasi Anda untuk mengaktifkan pemutaran video. Prosedur dan kode contohnya adalah sebagai berikut:
Integrasikan SDK Alibaba Cloud Player untuk Flutter.
Untuk instruksinya, lihat Integrasikan SDK.
Buat pemutar untuk memutar video.
Untuk instruksinya, lihat Fitur Dasar. Di Langkah 3. Buat sumber pemutaran, pilih salah satu metode berikut berdasarkan kebutuhan Anda.
Enkripsi Video Alibaba Cloud (enkripsi privat)
VidAuth
Saat memutar video HLS atau MP4 terenkripsi privat dengan metode VidAuth untuk ApsaraVideo for VOD, jika video juga berisi aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi ke AliyunVoDEncryption untuk hanya memutar aliran terenkripsi privat.
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption); // Opsional. Jika Anda mengatur ini ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "The video ID",
region: "The region ID", // Wajib. Wilayah tempat ApsaraVideo for VOD diaktifkan. Default: cn-shanghai.
playAuth: "<yourPlayAuth>", // Wajib. PlayAuth. Peroleh dengan memanggil operasi GetVideoPlayAuth untuk ApsaraVideo for VOD.
playConfig: value);
});VidSts
Saat memutar video HLS atau MP4 terenkripsi privat dengan metode VidSts untuk ApsaraVideo for VOD, jika video juga berisi aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi ke AliyunVoDEncryption untuk hanya memutar aliran terenkripsi privat.
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption); // Opsional. Jika Anda mengatur ini ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "The video ID",
region: "The region ID",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});Enkripsi privat berbasis lisensi
UrlSource
SDK pemutar Flutter mendukung enkripsi privat berbasis lisensi dengan UrlSource untuk video MP4 di v6.8.0 dan yang lebih baru, dan untuk video HLS (bitrate tunggal dan bitrate adaptif) di v6.17.0 dan yang lebih baru.
Saat memutar video dalam format HLS atau MP4 yang dienkripsi menggunakan enkripsi privat berbasis lisensi dengan pemutaran berbasis UrlSource, panggil operasi Peroleh URL pemutaran audio atau video untuk memperoleh URL pemutaran. Anda harus menambahkan etavirp_nuyila=1 ke URL yang diperoleh sebelum meneruskannya ke pemutar. (Parameter ini hanya diperlukan untuk file MP4. Untuk file HLS, Anda dapat menggunakan URL video asli secara langsung.) Konfigurasi SDK pemutar sama seperti untuk video standar, dan tidak diperlukan parameter tambahan.
Contoh URL pemutaran 1: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
Contoh URL pemutaran 2: https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// URL pemutaran.
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1"
// Buat instance pemutar.
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
fAliplayer.setUrl(playURL);
fAliplayer.prepare();
// Pemutar daftar.
FlutterAliListPlayer fAliListPlayer = FlutterAliPlayerFactory.createAliListPlayer();
fAliListPlayer.addUrlSource(playURL,uid);
fAliListPlayer.moveTo("uid");
// Pramuat.
FlutterAliPlayerMediaLoader fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
fAliPlayerMediaLoader.load(playURL,"duration");Enkripsi standar HLS
VidAuth
Saat memutar video terenkripsi standar HLS dengan metode VidAuth untuk ApsaraVideo for VOD, jika video juga berisi aliran dengan jenis enkripsi lain atau aliran transkoding tidak terenkripsi, Anda dapat mengatur jenis enkripsi ke HLSEncryption untuk hanya memutar aliran terenkripsi standar HLS. Kode berikut adalah contohnya:
Jika Penulisan Ulang Enkripsi Standar M3U8 diaktifkan, Anda harus memanggil setHlsUriToken untuk meneruskan token pengguna.
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // Opsional. Atur ke HLSEncryption untuk hanya mengembalikan aliran video terenkripsi standar HLS.
FlutterAliplayer.setHlsUriToken("token"); // Opsional. Jika Anda perlu memvalidasi MtsHlsUriToken, gunakan parameter ini untuk meneruskan token.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "The video ID",
region: "The region ID", // Wajib. Wilayah tempat ApsaraVideo for VOD diaktifkan. Default: cn-shanghai.
playAuth: "<yourPlayAuth>", // Wajib. PlayAuth. Peroleh dengan memanggil operasi GetVideoPlayAuth untuk ApsaraVideo for VOD.
playConfig: value);
});VidSts
Saat memutar video terenkripsi standar HLS dengan metode VidSts untuk ApsaraVideo for VOD, jika video juga berisi aliran dengan jenis enkripsi lain atau aliran transkoding tidak terenkripsi, Anda dapat mengatur jenis enkripsi ke HLSEncryption untuk hanya memutar aliran terenkripsi standar HLS. Kode berikut adalah contohnya:
Jika Penulisan Ulang Enkripsi Standar M3U8 diaktifkan, Anda harus memanggil setHlsUriToken untuk meneruskan token pengguna.
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // Opsional. Jika Anda mengatur ini ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
FlutterAliplayer.setHlsUriToken("token"); // Opsional. Jika Anda perlu memvalidasi MtsHlsUriToken, gunakan parameter ini untuk meneruskan token.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "The video ID",
region: "The region ID",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});UrlSource
Saat Anda menggunakan metode UrlSource untuk memutar aliran langsung atau on-demand dengan enkripsi standar HLS, konfigurasi SDK pemutar sama seperti untuk video standar.
Untuk memperoleh URL pemutaran, kami sarankan memanggil operasi GetPlayInfo di ApsaraVideo for VOD.
Setelah Penulisan Ulang Enkripsi Standar M3U8 diaktifkan, Anda harus menambahkan parameter MtsHlsUriToken=<token> ke URL pemutaran sebelum meneruskannya ke pemutar. Parameter ini dapat ditempatkan di mana saja dalam string kueri URL.
Contoh URL pemutaran asli: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Contoh URL untuk diteruskan ke pemutar: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
// Buat instance pemutar.
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
// URL pemutaran adalah untuk aliran langsung atau on-demand terenkripsi standar HLS.
fAliplayer.setUrl("The playback URL");
fAliplayer.prepare();FAQ
Untuk masalah umum selama proses enkripsi, lihat FAQ Enkripsi Video.