ApsaraVideo VOD dan ApsaraVideo Live menyediakan berbagai metode enkripsi video yang dapat digunakan bersama SDK Pemutar ApsaraVideo untuk mendekripsi dan memutar video. Metode ini secara efektif mencegah hotlinking, unduhan ilegal, dan distribusi tidak sah konten video Anda. Topik ini menjelaskan cara menggunakan SDK Pemutar ApsaraVideo untuk memutar video yang dienkripsi dengan Enkripsi Privat Alibaba Cloud, Enkripsi HLS, atau Enkripsi Digital Rights Management (DRM).
Pengenalan enkripsi video
ApsaraVideo VOD menyediakan mekanisme keamanan konten yang komprehensif untuk mencegah hotlinking, unduhan ilegal, dan distribusi tidak sah konten video. Mekanisme keamanan ini mencakup kontrol akses, penandatanganan URL, otentikasi jarak jauh, enkripsi video, serta unduhan aman.
Untuk informasi lebih lanjut mengenai mekanisme keamanan seperti kontrol akses, penandatanganan URL, dan otentikasi jarak jauh, lihat Ikhtisar keamanan video. Topik ini berfokus pada pemutaran video yang menggunakan tiga jenis enkripsi. Tabel berikut menjelaskan ketiga jenis enkripsi tersebut.
Mekanisme keamanan | Metode keamanan | Fitur | Tingkat keamanan | Kemudahan penggunaan |
Enkripsi video | Enkripsi privat Alibaba Cloud | Solusi enkripsi video cloud-native yang menggunakan algoritma enkripsi privat dan menjamin transmisi aman. | Tinggi | Rendah. Memerlukan konfigurasi sederhana dan integrasi dengan Pemutar ApsaraVideo. |
Enkripsi HLS | Solusi enkripsi HTTP Live Streaming (HLS) universal yang menggunakan AES-128 untuk mengenkripsi konten. Kompatibel dengan semua pemutar HLS, tetapi kuncinya dapat dengan mudah dicuri. | Tinggi | Tinggi. Anda harus membangun layanan manajemen kunci dan penerbitan token sendiri serta menjamin transmisi aman. | |
DRM komersial | Dukungan native untuk Apple FairPlay dan Google Widevine. Menyediakan tingkat keamanan tinggi dan memenuhi persyaratan sebagian besar penyedia konten berhak cipta. | Tinggi | Tinggi. Ditagih berdasarkan jumlah permintaan lisensi. Untuk enkripsi DRM pihak ketiga, lihat standar penagihan layanan pihak ketiga. Memerlukan integrasi dengan SDK Pemutar ApsaraVideo. |
Kompatibilitas SDK Pemutar ApsaraVideo untuk pemutaran terenkripsi
Sebelum menggunakan SDK Pemutar ApsaraVideo untuk web guna memutar video terenkripsi, pahami kompatibilitasnya dengan berbagai browser dan fitur enkripsi. Misalnya, SDK Pemutar ApsaraVideo untuk web mendukung pemutaran video yang menggunakan enkripsi privat pada browser seluler utama. Untuk informasi lebih lanjut, lihat Kompatibilitas browser dan Kompatibilitas fitur. ✔️ menunjukkan bahwa fitur didukung, sedangkan ❌ menunjukkan bahwa fitur tidak didukung.
Unduh versi terbaru SDK Pemutar ApsaraVideo untuk memastikan kompatibilitas fitur. Untuk informasi lebih lanjut, lihat Ikhtisar SDK.
Catatan: Format kontainer untuk HLS adalah M3U8.
Terminal | Metode pemutaran | Enkripsi privat (HLS) | Enkripsi privat berbasis lisensi (HLS) | Enkripsi privat berbasis lisensi (MP4) | Enkripsi privat (Live FLV) | Enkripsi HLS | Enkripsi DRM Alibaba Cloud | Enkripsi DRM pihak ketiga |
Web | VOD UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
VOD VidAuth | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
VOD VidSts | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | |
Live UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | |
Live LiveStsSource | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | |
Native (iOS/Android/Flutter) | VOD UrlSource | ✔️ | ✔️ Memerlukan SDK V6.17.0 atau yang lebih baru. | ✔️ Memerlukan SDK V6.8.0 atau yang lebih baru. | ❌ | ✔️ | ❌ | ✔️ Memerlukan SDK V7.8.0 atau yang lebih baru. Flutter tidak didukung. |
VOD VidAuth | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
VOD VidSts | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ Flutter tidak didukung. | ❌ | |
Live UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ Memerlukan SDK V7.8.0 atau yang lebih baru. Flutter tidak didukung. | |
Live LiveStsSource | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ Flutter tidak didukung. | ❌ |
Metode enkripsi
Enkripsi privat Alibaba Cloud
Enkripsi privat Alibaba Cloud mengenkripsi data video. Bahkan jika video diunduh secara lokal, video tersebut tetap terenkripsi. Metode ini secara efektif mencegah redistribusi jahat, kebocoran, dan hotlinking. Untuk informasi lebih lanjut, lihat Enkripsi privat Alibaba Cloud.
SDK Pemutar ApsaraVideo mengenkapsulasi logika dekripsi dan interaksi sisi server. Anda dapat menerapkan pemutaran terenkripsi dengan biaya rendah melalui konfigurasi transkoding terenkripsi dan integrasi pemutar.
Enkripsi privat Alibaba Cloud adalah layanan gratis, tetapi memerlukan transkoding video. Biaya dikenakan untuk operasi transkoding. Untuk informasi lebih lanjut mengenai penagihan, lihat Penagihan transkoding media.
Konfigurasikan enkripsi privat
Untuk informasi lebih lanjut mengenai prosedur dan konfigurasi enkripsi privat Alibaba Cloud, lihat Cara menggunakan.
Batasan
Enkripsi privat Alibaba Cloud mendukung video HLS, FLV, dan MP4. Video terenkripsi ini hanya dapat diputar menggunakan Pemutar ApsaraVideo. Di web, hanya pemutaran HLS yang didukung; di klien native, semua format didukung.
Enkripsi privat berbasis lisensi Alibaba Cloud
Enkripsi privat berbasis lisensi Alibaba Cloud memperluas enkripsi privat untuk menjamin keamanan pemutaran. Metode ini mempercepat startup pemutaran dengan memungkinkan pemutaran langsung dari URL video terenkripsi, sehingga cocok untuk video pendek dan seri video pendek.
Enkripsi privat berbasis lisensi Alibaba Cloud adalah layanan gratis, tetapi memerlukan transkoding video. Biaya dikenakan untuk operasi transkoding. Untuk informasi lebih lanjut mengenai penagihan, lihat Penagihan transkoding media.
Konfigurasikan enkripsi privat
Untuk informasi lebih lanjut mengenai prosedur dan konfigurasi enkripsi privat Alibaba Cloud, lihat Cara menggunakan.
Batasan
Enkripsi privat berbasis lisensi Alibaba Cloud mendukung video HLS dan MP4. Video terenkripsi ini hanya dapat diputar menggunakan Pemutar ApsaraVideo.
Enkripsi HLS
Enkripsi HLS menggunakan AES-128 untuk mengenkripsi konten video. Metode ini kompatibel dengan semua pemutar HLS, termasuk pemutar yang dikembangkan sendiri atau open-source, sehingga memberikan fleksibilitas tinggi namun memiliki hambatan masuk yang lebih tinggi dan tingkat keamanan yang lebih rendah. Untuk informasi lebih lanjut, lihat Enkripsi HLS.
Enkripsi HLS adalah layanan gratis, tetapi memerlukan transkoding video. Biaya dikenakan untuk operasi transkoding. Untuk informasi lebih lanjut mengenai penagihan, lihat Penagihan transkoding media.
Konfigurasi Enkripsi HLS
Untuk informasi lebih lanjut mengenai prosedur dan konfigurasi enkripsi HLS, lihat Prosedur integrasi.
Batasan
Enkripsi HLS kompatibel dengan berbagai pemutar HLS, sehingga Anda dapat memilih pemutar sendiri. Topik ini menggunakan Pemutar ApsaraVideo sebagai contoh untuk menunjukkan cara memutar video terenkripsi HLS. Pemutar ApsaraVideo mendukung pengiriman token. CDN Alibaba Cloud secara dinamis menyesuaikan URI dekripsi dalam file HLS dan menyertakan token pengguna agar bisnis Anda dapat melakukan autentikasi.
Enkripsi DRM Alibaba Cloud
ApsaraVideo VOD mendukung enkripsi DRM berstandar industri, memungkinkan manajemen satu atap untuk video berhak cipta dan kompatibel dengan solusi Widevine dan FairPlay. Untuk informasi lebih lanjut, lihat Enkripsi DRM.
Enkripsi DRM diimplementasikan melalui transkoding. Biaya hanya dikenakan untuk transkoding saat video di-output. Tidak ada biaya enkripsi DRM pada tahap ini. Biaya enkripsi DRM dikenakan saat terminal meminta pemutaran video terenkripsi DRM, dengan klien pemutaran ditagih berdasarkan jumlah permintaan lisensi untuk video tersebut. Untuk informasi lebih lanjut mengenai penagihan, lihat Penagihan DRM.
Konfigurasi Enkripsi DRM
Anda dapat mengaktifkan enkripsi DRM di Konsol ApsaraVideo Live dan ApsaraVideo VOD. Untuk informasi lebih lanjut, lihat Konfigurasikan enkripsi DRM untuk streaming langsung dan Konfigurasikan enkripsi DRM untuk VOD.
Batasan
Video yang dienkripsi dengan DRM hanya dapat diputar menggunakan Pemutar ApsaraVideo.
Enkripsi DRM pihak ketiga
ApsaraVideo VOD mendukung enkripsi DRM berstandar industri dan menyediakan dukungan end-to-end mulai dari produksi video di Intelligent Media Services dan enkripsi DRM pihak ketiga hingga dekripsi dan pemutaran dengan SDK Pemutar ApsaraVideo.
Enkripsi DRM diimplementasikan melalui transkoding. Biaya hanya dikenakan untuk transkoding saat video di-output. Tidak ada biaya enkripsi DRM pada tahap ini. Biaya enkripsi DRM dikenakan saat terminal meminta pemutaran video terenkripsi DRM, dengan klien pemutaran ditagih berdasarkan jumlah permintaan lisensi untuk video tersebut. Untuk informasi lebih lanjut mengenai penagihan, lihat Penagihan DRM.
Konfigurasi Enkripsi DRM
Anda dapat mengaktifkan fitur ini di Konsol Intelligent Media Services. Untuk informasi lebih lanjut, lihat Live packaging dan VOD packaging.
Web
Sebelum menggunakan SDK Pemutar ApsaraVideo untuk web, pahami kompatibilitasnya dengan berbagai browser dan dukungannya untuk memutar video yang menggunakan enkripsi privat Alibaba Cloud. Rinciannya sebagai berikut:
Mode H5 mendukung browser desktop dan seluler. Untuk informasi lebih lanjut, lihat Kompatibilitas fitur.
Karena alasan keamanan, Anda tidak dapat menggunakan video terenkripsi asli untuk debugging dengan enkripsi privat Alibaba Cloud.
Prosedur
Anda dapat menyematkan Pemutar ApsaraVideo di halaman web Anda untuk memutar video.
Untuk informasi lebih lanjut mengenai cara mengimpor SDK Pemutar ApsaraVideo untuk web ke halaman Anda, lihat Integrasi cepat.
Pilih metode enkripsi dan mulai pemutaran.
Anda dapat menyematkan SDK Pemutar ApsaraVideo untuk web di halaman web Anda untuk memutar video. Kode berikut memberikan contoh.
Enkripsi privat Alibaba Cloud
Pemutaran terenkripsi privat - Pemutaran VOD VidAuth (HLS)
Saat memutar video terenkripsi privat menggunakan metode VOD VidAuth, Anda harus mengatur parameter encryptType ke 1 untuk mengaktifkan enkripsi privat. Ini tidak diperlukan untuk memutar video biasa.
<!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 terenkripsi 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. Anda dapat memperoleh ID video di Konsol ApsaraVideo VOD. Buka Aset Media > Audio/Video. Contoh: 1e067a2831b641db90d570b6480f****.
playauth : '<your PlayAuth>',// Wajib. Anda dapat memanggil operasi GetVideoPlayAuth untuk memperoleh nilai parameter ini.
encryptType: 1, // Wajib. Atur parameter ini ke 1 untuk memutar aliran terenkripsi privat. Anda tidak perlu mengatur parameter ini dalam kasus lain.
playConfig:{EncryptType:'AliyunVoDEncryption'}, // Tentukan parameter ini jika aliran M3U8 output Anda berisi aliran terenkripsi non-privat lainnya.
// authTimeout: 7200, // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 7200 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
},function(player){
console.log('Pemutar telah dibuat.')
});
</script>
</body>
</html>Pemutaran terenkripsi privat - Pemutaran Live LiveStsSource (HLS)
Untuk memutar video terenkripsi privat menggunakan metode LiveStsSource, Anda harus mengirimkan URL dan kredensial sementara STS. Untuk informasi lebih lanjut mengenai cara menghasilkan kredensial sementara STS, lihat Dapatkan token STS. Kode berikut memberikan contoh.
<!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 terenkripsi privat Live</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.
source: '<your live stream url>',// Wajib. URL pemutaran aliran live HLS terenkripsi privat.
accessKeyId: '<your AccessKey ID>',// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
accessKeySecret: '<your AccessKey Secret>',// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
securityToken: '<your STS token>',// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
domain: '<your Domain>',// Wajib. Domain streaming untuk aliran live.
app:'<your App Name>',// Wajib. Nama Aplikasi dari aliran live.
stream:'<your Stream Name>',// Wajib. NamaStream dari aliran live.
regionId: '<region of your video>',// Wajib. Wilayah layanan, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
},function(player){
console.log('Pemutar telah dibuat.')
});
</script>
</body>
</html>
Untuk mendukung pemutaran VOD terenkripsi privat pada browser iOS versi sebelum 17.1, Anda harus menyebarkan skrip plugin pemutar tambahan. Langkah-langkahnya sebagai berikut:
Cara kerja: Enkripsi privat untuk iOS versi sebelum 17.1 memerlukan plugin tambahan yang menggunakan teknologi Service Worker. Karena kebijakan keamanan browser, situs web hanya dapat mengakses skrip service worker yang berasal dari origin yang sama dengan situs web tersebut. Oleh karena itu, Anda harus menyebarkan skrip plugin pemutar ke domain yang sama dengan situs web Anda.
Unduh skrip dari URL berikut: https://g.alicdn.com/apsara-media-box/imp-web-player/<version number>/aliplayer-worker-min.js
Sebarkan skrip tersebut. Misalnya, jika situs web Anda untuk memutar video terenkripsi privat adalah https://www.aliyun.com/a/b.html, Anda harus menyebarkan skrip ke https://www.aliyun.com/a/aliplayer-worker-min.js. Artinya, skrip tersebut harus berada di direktori yang sama dengan situs web saat ini.
Kirimkan URL ini saat menginisialisasi pemutar:
new Aliplayer({ // ...Parameter lainnya swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // Masukkan URL lengkap skrip plugin. Pastikan URL ini dapat diakses. })
Catatan: Pastikan versi pemutar dan versi plugin sama.
Jika halaman web Anda berjalan di aplikasi iOS yang dikemas khusus, seperti aplikasi uni-app, Anda harus menambahkan domain situs web Anda ke WKAppBoundDomains di file Info.plist aplikasi. Hal ini mengaktifkan fitur Service Worker di WKWebView. Untuk informasi lebih lanjut, lihat App-Bound Domains.
Enkripsi HLS
Pemutaran terenkripsi HLS - Pemutaran VOD VidAuth
Saat memutar video terenkripsi HLS menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
let player = new Aliplayer({
id:'J_prismPlayer',
vid:'<your video ID>', // Wajib. ID audio atau video. Contoh: 1e067a2831b641db90d570b6480f****.
playauth:'<your PlayAuth>', // Wajib. Kredensial pemutaran audio atau video.
playConfig: { // Opsional.
MtsHlsUriToken: '', // Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
EncryptType: 'HLSEncryption', // Opsional. Jika Anda mengatur jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
},
});Pemutaran terenkripsi HLS - Pemutaran VOD VidSts
Saat memutar video terenkripsi HLS menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
let player = new Aliplayer({
id: 'J_prismPlayer',
vid : '<your video ID>', // Wajib. Anda dapat memperoleh ID audio atau video di konsol (Aset Media > Audio/Video) atau dengan memanggil operasi API sisi server (SearchMedia) setelah audio atau video diunggah. Contoh: 1e067a2831b641db90d570b6480f****.
accessKeyId: '<your AccessKey ID>', // Wajib. ID AccessKey dari token STS sementara, yang dikembalikan saat token STS dihasilkan.
securityToken: '<your STS token>', // Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
accessKeySecret: '<your AccessKey Secret>', // Wajib. Rahasia AccessKey dari token STS sementara, yang dikembalikan saat token STS dihasilkan.
region: '<region of your video>', // Wajib. Wilayah tempat aset media berada, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
playConfig: { // Opsional.
MtsHlsUriToken: '', // Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
EncryptType: 'HLSEncryption', // Opsional. Jika Anda mengatur jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
},
};Pemutaran terenkripsi HLS - Pemutaran UrlSource
Saat memutar video terenkripsi HLS menggunakan metode UrlSource live atau VOD, konfigurasinya sama seperti memutar video biasa. Tidak diperlukan parameter tambahan.
let player = new Aliplayer({
id:'J_prismPlayer',
source:'<your play URL>', // URL pemutaran, bisa berupa URL live atau VOD.
isLive: true, // Menentukan apakah ini aliran live.
});Enkripsi DRM
Pemutaran terenkripsi DRM - Pemutaran VOD VidSts
Saat memutar video terenkripsi DRM menggunakan metode VOD VidSts, Anda harus mengatur parameter isDrm ke true untuk mengaktifkan enkripsi DRM. Ini tidak diperlukan untuk memutar video biasa.
<!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 terenkripsi 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. Anda dapat memperoleh ID video di Konsol ApsaraVideo VOD. Buka Aset Media > Audio/Video. Contoh: 1e067a2831b641db90d570b6480f****.
accessKeyId: '<your AccessKey ID>',// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
securityToken: '<your STS token>',// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
accessKeySecret: '<your AccessKey Secret>',// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
region: '<region of your video>', // Wajib. Wilayah tempat aset media berada, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
certId: '<your certificate ID>', // Wajib untuk pemutaran di perangkat Apple. Parameter ini digunakan untuk meminta sertifikat Apple. Anda dapat memperolehnya dari Konsol ApsaraVideo VOD atau ApsaraVideo Live berdasarkan implementasi enkripsi DRM Anda.
// authTimeout: 7200, // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur di Konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 7200 digunakan. Jika Anda mengatur parameter ini, pastikan nilainya lebih besar dari durasi video aktual untuk mencegah URL pemutaran kedaluwarsa sebelum pemutaran selesai.
},function(player){
console.log('Pemutar telah dibuat.')
});
</script>
</body>
</html>Pemutaran terenkripsi DRM - Pemutaran Live LiveStsSource
Untuk memutar video terenkripsi DRM menggunakan metode LiveStsSource, Anda harus mengirimkan URL dan kredensial sementara STS. Untuk informasi lebih lanjut mengenai cara menghasilkan kredensial sementara STS, lihat Dapatkan token STS. Kode berikut memberikan contoh.
<!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 terenkripsi DRM Live</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 live terenkripsi DRM.
accessKeyId: '<your AccessKey ID>',// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
securityToken: '<your STS token>',// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
accessKeySecret: '<your AccessKey Secret>',// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
region: '<region of your video>', // Wajib. Wilayah layanan tempat aset media berada, seperti cn-shanghai, eu-central-1, atau ap-southeast-1.
certId: '<your certificate ID>', // Wajib untuk pemutaran di perangkat Apple. Parameter ini digunakan untuk meminta sertifikat Apple. Anda dapat memperolehnya dari Konsol ApsaraVideo VOD atau ApsaraVideo Live berdasarkan implementasi enkripsi DRM Anda.
},function(player){
console.log('Pemutar telah dibuat.')
});
</script>
</body>
</html>Android
Prosedur
Anda dapat dengan cepat mengintegrasikan Pemutar ApsaraVideo untuk Android ke dalam aplikasi Anda untuk memutar video. Langkah-langkah dan kode contohnya sebagai berikut:
Integrasikan SDK Pemutar ApsaraVideo untuk Android.
Untuk informasi lebih lanjut, lihat Integrasikan SDK.
Buat pemutar untuk memutar video.
Untuk langkah-langkah membuat pemutar, lihat Fitur Dasar. Pada Langkah 3. Buat DataSource, pilih salah satu metode berikut untuk membuat sumber data sesuai kebutuhan Anda.
Enkripsi privat Alibaba Cloud
Catatan
Anda dapat memutar video HLS yang dienkripsi menggunakan kriptografi privat Alibaba Cloud melalui pemutaran berbasis URL setelah membuat templat transkoding dan mentranskode video. Sebelum transkoding, Anda harus mengikat lisensi dalam akun yang sama. Untuk informasi lebih lanjut, lihat Kelola lisensi. Kemudian, Anda dapat menggunakan parameter EncryptType untuk membuat kelompok templat transkoding. Contohnya sebagai berikut:
Setelah templat dibuat, Anda tidak dapat mengubah atau menyimpannya di konsol. Jika tidak, metode enkripsi akan ditimpa.
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS_Local_Encryption",
"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"
}
}]Pemutaran terenkripsi privat - Pemutaran VOD VidAuth (HLS + MP4)
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk memfilter aliran terenkripsi privat jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa.
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("Vid info");// Wajib. ID video.
vidAuth.setPlayAuth("<yourPlayAuth>");// Wajib. Kredensial pemutaran. Anda dapat memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
vidAuth.setRegion("Region");// Parameter ini sudah tidak digunakan lagi di SDK Pemutar ApsaraVideo V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah. Pemutar secara otomatis mengurai wilayah. Untuk versi sebelumnya, parameter ini wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// vidAuth.setAuthTimeout(3600); // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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.
aliPlayer.setDataSource(vidAuth);Pemutaran terenkripsi privat - Pemutaran VOD VidSts (HLS + MP4)
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk memfilter aliran terenkripsi privat jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa.
VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("Vid info");// Wajib. ID video.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
vidSts.setSecurityToken("<yourSecurityToken>");// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
vidSts.setRegion("Region");// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// vidSts.setAuthTimeout(3600); // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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.
aliPlayer.setDataSource(vidSts);Pemutaran terenkripsi privat - Pemutaran Live LiveStsSource (HLS + FLV)
Untuk memutar video HLS atau FLV terenkripsi privat menggunakan metode LiveStsSource, Anda harus mengirimkan URL dan kredensial STS, serta mengatur jenis enkripsi video ke AliEncryption. Kode berikut memberikan contoh.
Buat sumber data.
Anda harus mengirimkan AVPLiveStsSource sebagai sumber pemutaran.
// Buat objek LiveSts dan atur EncryptionType ke AliEncryption. LiveSts liveSts = new LiveSts(); liveSts.setUrl("<your live stream url>");// Wajib. URL pemutaran aliran live HLS terenkripsi privat. liveSts.setAccessKeyId("<your AccessKey ID>");// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini. liveSts.setAccessKeySecret("<your AccessKey Secret>");// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini. liveSts.setSecurityToken("<your STS token>");// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini. liveSts.setDomain("<your Domain>");// Wajib. Domain streaming untuk aliran live. liveSts.setApp("<your App Name>");// Wajib. Nama Aplikasi dari aliran live. liveSts.setStream("<your Stream Name>");// Wajib. NamaStream dari aliran live. 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 kedaluwarsa token STS.
Selama pemutaran live terenkripsi, kunci enkripsi mungkin berubah. Saat kunci berubah, kunci terbaru diminta menggunakan STS. Anda perlu mendengarkan apakah token STS masih valid. Token yang tidak valid memengaruhi pemutaran aliran live terenkripsi.
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { // Ganti pseudocode berikut dengan implementasi Anda sendiri. if(info is valid){ return IPlayer.StsStatus.Valid; } // Ganti pseudocode berikut dengan implementasi Anda sendiri. if(a new valid STS can be obtained){ obtainSTS(); // Ini bisa berupa panggilan asinkron atau sinkron. return IPlayer.StsStatus.Pending; } // Jika info tidak valid dan Anda tidak dapat memperoleh STS terbaru, kami sarankan Anda menghentikan pemutaran untuk mencegah kesalahan tampilan. mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });CatatanSetelah Anda mengambil token STS, Anda harus memanggil metode
updateLiveStsInfountuk memperbarui informasi STS. Jika pengambilan token gagal, kami sarankan Anda menghentikan pemutaran. Jika Anda tidak memperbarui informasi STS, pemutar akan terus menggunakan token STS sebelumnya untuk mengambil kunci setelah timeout. Jika token STS tidak valid, tearing layar atau kegagalan pemutaran dapat terjadi.mAliyunVodPlayer.updateStsInfo(stsInfo);
Enkripsi privat berbasis lisensi Alibaba Cloud
Catatan
Video HLS yang dienkripsi dengan enkripsi privat berbasis lisensi Alibaba Cloud dapat diputar menggunakan URL setelah ditranskode menggunakan templat transkoding. Sebelum transkoding, Anda harus melampirkan lisensi di bawah akun yang sama. Untuk informasi lebih lanjut, lihat Kelola Lisensi. Kemudian, Anda dapat menggunakan parameter EncryptType untuk membuat kelompok templat transkoding, seperti pada contoh berikut:
Setelah templat dibuat, Anda tidak dapat mengubah atau menyimpannya di konsol. Jika tidak, metode enkripsi akan ditimpa.
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS_Local_Encryption",
"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"
}
}]Pemutaran terenkripsi privat berbasis lisensi - Pemutaran VOD UrlSource (HLS + MP4)
SDK Pemutar ApsaraVideo untuk Android V6.8.0 dan yang lebih baru mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan metode VOD UrlSource. V6.17.0 dan yang lebih baru mendukung video HLS terenkripsi privat berbasis lisensi (bitrate tunggal dan ganda).
Untuk memutar video HLS atau MP4 terenkripsi privat berbasis lisensi menggunakan metode VOD UrlSource, Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran. Sebelum mengirimkan URL ke pemutar, Anda harus menambahkan etavirp_nuyila=1 di akhir URL. Posisi parameter tidak penting. Ini hanya diperlukan untuk video MP4. Untuk video HLS, Anda dapat menggunakan URL aslinya. Konfigurasi SDK pemutar sama seperti memutar video biasa. 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 video.
aliPlayer.setDataSource(urlSource);
aliPlayer.prepare();
// Pemutar video pendek
AliListPlayer aliyunListPlayer = AliPlayerFactory.createAliListPlayer(getApplicationContext());
// Tambahkan sumber pemutaran UrlSource.
aliyunListPlayer.addUrl(playURL,uid);
aliyunListPlayer.moveTo(uid);
// Pra-muat
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");Enkripsi HLS
Pemutaran terenkripsi HLS - Pemutaran VOD VidAuth
Saat memutar video terenkripsi HLS menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus memanggil setMtsHlsUriToken untuk menyetel token pengguna.
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
playerConfig.setMtsHlsUriToken("token");// Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
vidAuth.setPlayConfig(playerConfig);
vidAuth.setVid("Vid info");// Wajib. ID video.
vidAuth.setPlayAuth("<yourPlayAuth>");// Wajib. Kredensial pemutaran. Anda dapat memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
vidAuth.setRegion("Region");// Parameter ini sudah tidak digunakan lagi di SDK Pemutar ApsaraVideo V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah. Pemutar secara otomatis mengurai wilayah. Untuk versi sebelumnya, parameter ini wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// vidAuth.setAuthTimeout(3600);// Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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.
aliPlayer.setDataSource(vidAuth);Pemutaran terenkripsi HLS - Pemutaran VOD VidSts
Saat memutar video terenkripsi HLS menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus memanggil setMtsHlsUriToken untuk menyetel token pengguna.
VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
playerConfig.setMtsHlsUriToken("token");// Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("Vid info");// Wajib. ID video.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
vidSts.setSecurityToken("<yourSecurityToken>");// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
vidSts.setRegion("Region");// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// vidSts.setAuthTimeout(3600);// Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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.
aliPlayer.setDataSource(vidSts);Pemutaran terenkripsi HLS - Pemutaran UrlSource
Saat memutar video terenkripsi HLS menggunakan metode UrlSource live atau VOD, konfigurasi SDK pemutar sama seperti memutar video biasa. Tidak diperlukan parameter tambahan.
Kami sarankan Anda menggunakan ApsaraVideo VOD. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran video dan mengirimkannya ke pemutar.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus menambahkan MtsHlsUriToken=<token> di akhir URL yang diperoleh (posisi tidak penting) sebelum mengirimkannya ke pemutar.
Contoh URL pemutaran asli: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Contoh URL yang dimasukkan ke pemutar: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
UrlSource urlSource = new UrlSource();
urlSource.setUri("Playback URL");// URL pemutaran aliran live atau VOD terenkripsi HLS.
aliPlayer.setDataSource(urlSource);Enkripsi DRM Alibaba Cloud
Di Android, kami sarankan Anda menggunakan SurfaceView untuk pemutaran guna memastikan video berkeamanan tinggi dapat diputar dengan benar.
Pemutaran terenkripsi DRM - Pemutaran VOD VidSts
Untuk informasi lebih lanjut mengenai cara mengonfigurasi enkripsi DRM, lihat Konfigurasikan enkripsi DRM untuk VOD. Saat memutar video terenkripsi DRM menggunakan metode VOD VidSts, konfigurasinya sama seperti memutar video biasa. Tidak diperlukan parameter tambahan.
VidSts vidSts = new VidSts();
vidSts.setVid("Vid info");// Wajib. ID video.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
vidSts.setSecurityToken("<yourSecurityToken>");// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
vidSts.setRegion("Region");// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// vidSts.setAuthTimeout(3600); // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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.
aliPlayer.setDataSource(vidSts);Pemutaran terenkripsi DRM - Pemutaran Live LiveStsSource
Untuk informasi lebih lanjut mengenai cara mengonfigurasi enkripsi DRM, lihat Konfigurasikan enkripsi DRM untuk streaming langsung. Untuk memutar video terenkripsi DRM menggunakan metode LiveStsSource, Anda harus mengirimkan URL dan kredensial STS, serta mengatur jenis enkripsi video ke WideVine_FairPlay. Kode berikut memberikan contoh.
Buat sumber data.
Anda harus mengirimkan AVPLiveStsSource sebagai 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 live HLS terenkripsi DRM. liveSts.setAccessKeyId("<your AccessKey ID>");// Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini. liveSts.setAccessKeySecret("<your AccessKey Secret>");// Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini. liveSts.setSecurityToken("<your STS token>");// Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini. liveSts.setDomain("<your Domain>");// Wajib. Domain streaming untuk aliran live. liveSts.setApp("<your App Name>");// Wajib. Nama Aplikasi dari aliran live. liveSts.setStream("<your Stream Name>");// Wajib. NamaStream dari aliran live. 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 kedaluwarsa token STS.
Selama pemutaran live terenkripsi, kunci enkripsi mungkin berubah. Saat kunci berubah, kunci terbaru diminta menggunakan STS. Anda perlu mendengarkan apakah token STS masih valid. Token yang tidak valid memengaruhi pemutaran aliran live terenkripsi.
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { if(info can be used){ return IPlayer.StsStatus.Valid; } if(a valid STS can be obtained){ Obtain STS();// Bisa asinkron atau sinkron. return IPlayer.StsStatus.Pending; } // Jika info tidak valid dan STS baru tidak dapat diperoleh, kami sarankan menghentikan pemutaran untuk mencegah tearing layar. mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });CatatanSetelah Anda mengambil token STS, Anda harus memanggil metode
updateLiveStsInfountuk memperbarui informasi STS. Jika pengambilan token gagal, kami sarankan Anda menghentikan pemutaran. Jika Anda tidak memperbarui informasi STS, pemutar akan terus menggunakan token STS sebelumnya untuk mengambil kunci setelah timeout. Jika token STS tidak valid, tearing layar atau kegagalan pemutaran dapat terjadi.mAliyunVodPlayer.updateStsInfo(stsInfo);
Enkripsi DRM pihak ketiga
Fitur ini memerlukan SDK Pemutar ApsaraVideo V7.8.0 atau yang lebih baru.
Pemutaran terenkripsi DRM pihak ketiga (Widevine) - Pemutaran VOD UrlSource/Pemutaran Live UrlSource
Hanya solusi Widevine untuk HLS dan DASH yang didukung.
Untuk informasi lebih lanjut mengenai cara mengonfigurasi enkripsi DRM, lihat VOD packaging. Saat memutar video terenkripsi DRM menggunakan metode UrlSource, konfigurasinya sama seperti memutar video biasa. Namun, Anda juga harus mengimplementasikan antarmuka DrmCallback untuk memperoleh informasi kunci video.
// Implementasikan antarmuka DrmCallback.requestKey dan peroleh kunci dengan merujuk pada dokumentasi penyedia DRM pihak ketiga.
// Kode berikut memberikan contoh cara memperoleh kunci dari PallyCon. Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm.
player.setDrmCallback(new DrmCallback() {
@Override
public byte[] requestKey(byte[] data) {
// Kirim permintaan HTTP POST untuk memperoleh informasi kunci sesuai persyaratan penyedia DRM.
String licenseUrl = "https://license-global.pallycon.com/ri/licenseManager.do";
String[] header = {
// Ganti TOKEN_ID dengan ID token 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 Anda diatur ke original, kembalikan respons langsung. Jika tidak, Anda perlu mengurai respons sebelum mengembalikannya.
// Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm/license/license-token/#token-json.
// Format dan struktur respons sangat bervariasi antar penyedia. Periksa dengan cermat. Jika respons tidak dapat digunakan untuk dekripsi, pemutar akan melaporkan kesalahan.
return response;
} else {
// Tangani pengecualian. Pemutar akan melaporkan kesalahan.
return null;
}
}
});iOS
Prosedur
Anda dapat dengan cepat mengintegrasikan Pemutar ApsaraVideo untuk iOS ke dalam aplikasi Anda untuk memutar video. Langkah-langkah dan kode contohnya sebagai berikut:
Integrasikan SDK Pemutar ApsaraVideo untuk iOS.
Untuk informasi lebih lanjut, lihat Integrasikan SDK.
Buat pemutar untuk pra-muat dan memutar atau memuat video.
Untuk informasi lebih lanjut mengenai pembuatan pemutar, lihat Fitur dasar. Di Langkah 3. Buat sumber data, Anda dapat membuat sumber data dengan salah satu cara berikut.
Enkripsi privat Alibaba Cloud
Pemutaran terenkripsi privat - VOD VidAuth (HLS + MP4)
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk memfilter aliran terenkripsi privat jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa.
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid info"; // Wajib. ID video.
authSource.playAuth = @"<yourPlayAuth>"; // Wajib. Kredensial pemutaran. Anda dapat memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
authSource.region = @"Region"; // Parameter ini sudah tidak digunakan lagi di SDK Pemutar ApsaraVideo V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah. Pemutar secara otomatis mengurai wilayah. Untuk versi sebelumnya, parameter ini wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// authSource.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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];Pemutaran terenkripsi privat - VOD VidSts (HLS + MP4)
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk memfilter aliran terenkripsi privat jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Region"; // Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
source.vid = @"Vid info"; // Wajib. ID video.
source.securityToken = @"<yourSecurityToken>"; // Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
// source.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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];Pemutaran terenkripsi privat - Live LiveStsSource (HLS + FLV)
Untuk memutar video HLS atau FLV terenkripsi privat menggunakan metode LiveStsSource, Anda harus mengirimkan URL dan kredensial STS, serta mengatur jenis enkripsi video ke ENCRYPTION_TYPE_ALIVODENCRYPTION. Kode berikut memberikan contoh.
Buat sumber data.
Anda harus mengirimkan AVPLiveStsSource sebagai sumber pemutaran.
// Buat objek LiveSts dan atur encryptionType ke ENCRYPTION_TYPE_ALIVODENCRYPTION. AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"Encrypted live URL" accessKeyId:@"Temporary AK ID" accessKeySecret:@"Temporary AK secret" securityToken:@"Security token" region:@"Region value" domain:@"URL streaming domain" app:@"Streaming application name" stream:@"Streaming stream name" 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 token STS.
Selama pemutaran live terenkripsi, kunci enkripsi mungkin berubah. Saat kunci berubah, kunci terbaru diminta menggunakan STS. Anda perlu mendengarkan apakah token STS masih valid. Token yang tidak valid memengaruhi pemutaran aliran live terenkripsi.
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info can be used) { return Valid; } if(a valid STS can be obtained){ Obtain STS();// Bisa asinkron atau sinkron. return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];CatatanSetelah Anda mengambil token STS, Anda harus memanggil metode
updateLiveStsInfountuk memperbarui informasi STS. Jika pengambilan token gagal, kami sarankan Anda menghentikan pemutaran. Jika Anda tidak memperbarui informasi STS, pemutar akan terus menggunakan token STS sebelumnya untuk mengambil kunci setelah timeout. Jika token STS tidak valid, tearing layar atau kegagalan pemutaran dapat terjadi.[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Enkripsi privat berbasis lisensi Alibaba Cloud
Pemutaran terenkripsi privat berbasis lisensi - Pemutaran VOD UrlSource (HLS + MP4)
SDK Pemutar ApsaraVideo untuk iOS V6.8.0 dan yang lebih baru mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan metode VOD UrlSource. V6.17.0 dan yang lebih baru mendukung video HLS terenkripsi privat berbasis lisensi (bitrate tunggal dan ganda).
Untuk memutar video HLS atau MP4 terenkripsi privat berbasis lisensi menggunakan metode VOD UrlSource, Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran. Sebelum mengirimkan URL ke pemutar, Anda harus menambahkan etavirp_nuyila=1 di akhir URL. Posisi parameter tidak penting. Ini hanya diperlukan untuk video MP4. Untuk video HLS, Anda dapat menggunakan URL aslinya. Konfigurasi SDK pemutar sama seperti memutar video biasa. 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 video. Anda harus menambahkan etavirp_nuyila=1 di akhir URL yang diperoleh (hanya untuk MP4) sebelum mengirimkannya ke pemutar. 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"];
//Pra-muat
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];Enkripsi HLS
Pemutaran terenkripsi HLS - Pemutaran VOD VidAuth
Saat memutar video terenkripsi HLS menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus memanggil setHlsUriToken untuk menyetel token pengguna.
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid info"; // Wajib. ID video.
authSource.playAuth = @"<yourPlayAuth>"; // Wajib. Kredensial pemutaran. Anda dapat memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
authSource.region = @"Region"; // Parameter ini sudah tidak digunakan lagi di SDK Pemutar ApsaraVideo V5.5.5.0 dan yang lebih baru. Anda tidak perlu mengatur wilayah. Pemutar secara otomatis mengurai wilayah. Untuk versi sebelumnya, parameter ini wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
// authSource.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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 jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
[config setHlsUriToken: @"token"]; // Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
source.playConfig = [config generatePlayerConfig];
//Atur sumber pemutaran.
[self.player setAuthSource:authSource];Pemutaran terenkripsi HLS - Pemutaran VOD VidSts
Saat memutar video terenkripsi HLS menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus memanggil setHlsUriToken untuk menyetel token pengguna.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Vid info"; // Wajib. ID video.
source.region = @"Region"; // Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
source.securityToken = @"<yourSecurityToken>"; // Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
// source.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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 jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
[config setHlsUriToken: @"token"]; // Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
source.playConfig = [config generatePlayerConfig];
// Atur sumber pemutaran.
[self.player setStsSource:source];Pemutaran terenkripsi HLS - Pemutaran UrlSource
Saat memutar video terenkripsi HLS menggunakan metode UrlSource live atau VOD, konfigurasi SDK pemutar sama seperti memutar video biasa. Tidak diperlukan parameter tambahan.
Kami sarankan Anda menggunakan ApsaraVideo VOD. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran video dan mengirimkannya ke pemutar.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus menambahkan MtsHlsUriToken=<token> di akhir URL yang diperoleh (posisi tidak penting) sebelum mengirimkannya ke pemutar.
Contoh URL pemutaran asli: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Contoh URL yang dimasukkan ke pemutar: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; // URL pemutaran aliran live atau VOD terenkripsi HLS.
[self.player setUrlSource:urlSource];Enkripsi DRM Alibaba Cloud
Di iOS, Anda harus memanggil metode setFairPlayCertID di AliPlayerGlobalSettings sekali secara global sebelum memanggil [self.player prepare] untuk mengatur ID sertifikat. Anda dapat memperoleh ID sertifikat di Konsol ApsaraVideo VOD dengan memilih Manajemen Konfigurasi > Pemrosesan Media > Manajemen Sertifikat DRM.
[AliPlayerGlobalSettings setFairPlayCertID:@"ID Sertifikat yang diperoleh dari konsol"];Pemutaran terenkripsi DRM - Pemutaran VOD VidSts
Untuk informasi lebih lanjut mengenai cara mengonfigurasi enkripsi DRM, lihat Konfigurasikan enkripsi DRM untuk VOD. Saat memutar video terenkripsi DRM menggunakan metode VOD VidSts, konfigurasinya sama seperti memutar video biasa. Tidak diperlukan parameter tambahan.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Region"; // Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
source.vid = @"Vid info"; // Wajib. ID video.
source.securityToken = @"<yourSecurityToken>"; // Wajib. Token STS. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan token ini.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Wajib. Rahasia AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan rahasia ini.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari token STS sementara. Anda dapat memanggil operasi AssumeRole STS untuk menghasilkan ID ini.
// source.authTimeout = 3600; // Opsional. Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur 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]Pemutaran terenkripsi DRM - Pemutaran Live LiveStsSource
Untuk informasi lebih lanjut mengenai cara mengonfigurasi enkripsi DRM, lihat Konfigurasikan enkripsi DRM untuk streaming langsung. Untuk memutar video terenkripsi DRM menggunakan metode LiveStsSource, Anda harus mengirimkan URL dan kredensial STS, serta mengatur jenis enkripsi video ke ENCRYPTION_TYPE_FAIRPLAY. Kode berikut memberikan contoh.
Buat sumber data.
Anda harus mengirimkan AVPLiveStsSource sebagai sumber pemutaran.
// Buat objek LiveSts dan atur encryptionType ke ENCRYPTION_TYPE_FAIRPLAY. AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"Encrypted live URL" accessKeyId:@"Temporary AK ID" accessKeySecret:@"Temporary AK secret" securityToken:@"Security token" region:@"Region value" domain:@"URL streaming domain" app:@"Streaming application name" stream:@"Streaming stream name" 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 kedaluwarsa token STS.
Selama pemutaran live terenkripsi, kunci enkripsi mungkin berubah. Saat kunci berubah, kunci terbaru diminta menggunakan STS. Anda perlu mendengarkan apakah token STS masih valid. Token yang tidak valid memengaruhi pemutaran aliran live terenkripsi.
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info can be used){ return Valid; } if(a valid STS can be obtained){ Obtain STS();// Bisa asinkron atau sinkron. return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];CatatanSetelah Anda mengambil token STS, Anda harus memanggil metode
updateLiveStsInfountuk memperbarui informasi STS. Jika pengambilan token gagal, kami sarankan Anda menghentikan pemutaran. Jika Anda tidak memperbarui informasi STS, pemutar akan terus menggunakan token STS sebelumnya untuk mengambil kunci setelah timeout. Jika token STS tidak valid, tearing layar atau kegagalan pemutaran dapat terjadi.[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 ApsaraVideo V7.8.0 atau yang lebih baru.
Anda harus menggunakan AppleAVPlayer untuk memutar video terenkripsi FairPlay. Sebelum pemutaran dimulai, Anda dapat memanggil
[self.player setPreferPlayerName:@"AppleAVPlayer"]untuk mengganti kernel. Untuk memutar video tidak terenkripsi DRM, Anda dapat memanggil[self.player setPreferPlayerName:@""]untuk mengembalikan kernel default.
Pemutaran terenkripsi DRM pihak ketiga (Fairplay) - Pemutaran VOD UrlSource/Live UrlSource
Hanya solusi FairPlay untuk HLS yang didukung.
Untuk informasi lebih lanjut mengenai cara mengonfigurasi enkripsi DRM, lihat Live packaging. Saat memutar video terenkripsi DRM menggunakan metode UrlSource, konfigurasinya sama seperti memutar video biasa. Namun, 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 a third-party DRM video){
[self.player setPreferPlayerName:@"AppleAVPlayer"];
}
//...
}
// Implementasikan antarmuka AVPDrmDelegate.requestCert dan requestKey, dan peroleh sertifikat dan kunci dengan merujuk pada dokumentasi penyedia DRM pihak ketiga.
// Kode berikut memberikan contoh 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 meminta dan menyimpan cache sertifikat sebelumnya. Dalam hal ini, cukup kembalikan sertifikat yang disimpan cache untuk mengurangi waktu startup pemutaran.
// Jika data sertifikat salah, pemutar akan 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";
// Kirim permintaan HTTP GET untuk sertifikat FairPlay yang dikonfigurasi sesuai persyaratan penyedia DRM.
// Hindari memblokir thread ini terlalu lama.
NSData* responseData = [self performAsyncHttpGet:url];
if (!responseData) {
// Tangani pengecualian. Pemutar akan melaporkan kesalahan.
return nil;
}
// Data yang dikembalikan perlu 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 {
// Kirim permintaan HTTP POST untuk memperoleh informasi kunci sesuai persyaratan 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 perlu mengurai respons sebelum mengembalikannya.
// Untuk informasi lebih lanjut, lihat https://pallycon.com/docs/en/multidrm/license/license-token/#token-json.
// Format dan struktur respons sangat bervariasi antar penyedia. Periksa dengan cermat. Jika respons tidak dapat digunakan untuk dekripsi, pemutar akan melaporkan kesalahan.
return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}Flutter
Enkripsi DRM tidak didukung di Flutter.
Prosedur
Anda dapat dengan cepat mengintegrasikan Pemutar ApsaraVideo untuk Flutter ke dalam aplikasi Anda untuk memutar video. Langkah-langkah dan kode contohnya sebagai berikut:
Integrasikan SDK Pemutar ApsaraVideo untuk Flutter.
Untuk informasi lebih lanjut, lihat Integrasikan SDK.
Buat pemutar untuk memutar video.
Untuk informasi lebih lanjut mengenai cara membuat pemutar, lihat Fitur dasar. Untuk Langkah 3. Buat sumber pemutaran, Anda dapat membuat sumber dengan salah satu cara berikut sesuai kebutuhan.
Enkripsi privat Alibaba Cloud
Pemutaran terenkripsi privat - VOD VidAuth (HLS + MP4)
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk memfilter aliran terenkripsi privat jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa.
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid info",
region: "Region",// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
playAuth: "<yourPlayAuth>",// Wajib. Kredensial pemutaran. Anda dapat memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
playConfig: value);
});Pemutaran terenkripsi privat - VOD VidSts (HLS + MP4)
Saat memutar video HLS atau MP4 terenkripsi privat menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke AliyunVoDEncryption untuk memfilter aliran terenkripsi privat jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa.
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid info",
region: "Region",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});Enkripsi privat berbasis lisensi Alibaba Cloud
Pemutaran terenkripsi privat berbasis lisensi - Pemutaran VOD UrlSource (HLS + MP4)
SDK Pemutar ApsaraVideo untuk Flutter V6.8.0 dan yang lebih baru mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan metode VOD UrlSource. V6.17.0 dan yang lebih baru mendukung video HLS terenkripsi privat berbasis lisensi (bitrate tunggal dan ganda).
Untuk memutar video HLS atau MP4 terenkripsi privat berbasis lisensi menggunakan metode VOD UrlSource, Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran. Sebelum mengirimkan URL ke pemutar, Anda harus menambahkan etavirp_nuyila=1 di akhir URL. Posisi parameter tidak penting. Ini hanya diperlukan untuk video MP4. Untuk video HLS, Anda dapat menggunakan URL aslinya. Konfigurasi SDK pemutar sama seperti memutar video biasa. 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");
//Pra-muat
FlutterAliPlayerMediaLoader fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
fAliPlayerMediaLoader.load(playURL,"duration");Enkripsi HLS
Pemutaran terenkripsi HLS - Pemutaran VOD VidAuth
Saat memutar video terenkripsi HLS menggunakan metode VOD VidAuth, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus memanggil setHlsUriToken untuk menyetel token pengguna.
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke HLSEncryption, hanya aliran video terenkripsi HLS yang dikembalikan.
FlutterAliplayer.setHlsUriToken("token");// Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid info",
region: "Region",// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default adalah cn-shanghai.
playAuth: "<yourPlayAuth>",// Wajib. Kredensial pemutaran. Anda dapat memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
playConfig: value);
});Pemutaran terenkripsi HLS - Pemutaran VOD VidSts
Saat memutar video terenkripsi HLS menggunakan metode VOD VidSts, Anda dapat mengatur jenis enkripsi video ke HLSEncryption untuk memfilter aliran terenkripsi HLS jika video tersebut juga memiliki jenis enkripsi lain atau aliran transkoding biasa. Kode berikut memberikan contoh.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus memanggil setHlsUriToken untuk menyetel token pengguna.
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// Opsional. Jika Anda mengatur jenis enkripsi ke AliyunVoDEncryption, hanya aliran video terenkripsi privat yang dikembalikan.
FlutterAliplayer.setHlsUriToken("token");// Opsional. Gunakan parameter ini untuk mengirimkan MtsHlsUriToken (token pengguna) untuk verifikasi.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid info",
region: "Region",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});Pemutaran terenkripsi HLS - Pemutaran UrlSource
Saat memutar video terenkripsi HLS menggunakan metode UrlSource live atau VOD, konfigurasi SDK pemutar sama seperti memutar video biasa. Tidak diperlukan parameter tambahan.
Kami sarankan Anda menggunakan ApsaraVideo VOD. Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL pemutaran video dan mengirimkannya ke pemutar.
Setelah Anda mengaktifkan Enkripsi dan penulisan ulang M3U8, Anda harus menambahkan MtsHlsUriToken=<token> di akhir URL yang diperoleh (posisi tidak penting) sebelum mengirimkannya ke pemutar.
Contoh URL pemutaran asli: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Contoh URL yang dimasukkan ke pemutar: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
//Buat instance pemutar.
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
//URL pemutaran aliran live atau VOD terenkripsi HLS.
fAliplayer.setUrl("Playback URL");
fAliplayer.prepare();FAQ
Untuk informasi lebih lanjut mengenai masalah umum dan solusi untuk enkripsi video, lihat FAQ tentang enkripsi video.