All Products
Search
Document Center

ApsaraVideo VOD:Putar video terenkripsi

Last Updated:Aug 26, 2026

ApsaraVideo VOD dan ApsaraVideo Live mendukung berbagai metode enkripsi video. Topik ini menjelaskan cara menggunakan ApsaraVideo Player SDK untuk memutar video yang dienkripsi dengan Enkripsi Privat Alibaba Cloud, Enkripsi HLS standar, dan Enkripsi DRM.

Ikhtisar enkripsi video

ApsaraVideo VOD menyediakan mekanisme keamanan konten komprehensif yang mencakup kontrol akses, penandatanganan URL, otentikasi jarak jauh, enkripsi video, dan unduhan aman.

Ikhtisar mencakup semua kebijakan keamanan yang tersedia. Tabel berikut membandingkan ketiga metode enkripsi video tersebut.

Kebijakan keamanan

Metode

Manfaat

Tingkat keamanan

Kompleksitas penyebaran

Enkripsi video

Alibaba Cloud proprietary cryptography

ApsaraVideo VOD menggunakan algoritma kriptografi proprietari 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 ApsaraVideo Player SDK.

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.

Commercial DRM

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 ApsaraVideo Player SDK.

Kompatibilitas ApsaraVideo Player SDK

Catatan
  1. Sebelum menggunakan ApsaraVideo Player SDK for Web untuk memutar video terenkripsi, periksa Kompatibilitas browser dan Kompatibilitas fitur. ApsaraVideo Player SDK for Web dapat memutar video yang dienkripsi dengan kriptografi proprietari Alibaba Cloud pada browser seluler utama. Pada tabel berikut, ✔️ menunjukkan didukung dan ❌ menunjukkan tidak didukung.

  2. Untuk memastikan kompatibilitas, unduh versi terbaru ApsaraVideo Player SDK dari halaman Ikhtisar SDK.

  3. Catatan: HLS menggunakan format M3U8.

Client

Metode pemutaran

Proprietary cryptography (HLS)

License-based cryptography (HLS)

License-based cryptography (MP4)

Proprietary cryptography (live FLV)

HLS encryption

Alibaba Cloud DRM

Third-party DRM

Web

UrlSource-based playback

✔️

✔️

VidAuth-based playback

✔️

✔️

VidSts-based playback

✔️

✔️

UrlSource-based live streaming

✔️

✔️

LiveStsSource-based live streaming

Native (iOS/Android/Flutter/Harmony)

Native (iOS/Android/Flutter)

UrlSource-based playback

✔️

✔️

Memerlukan ApsaraVideo Player SDK v6.17.0 atau lebih baru.

✔️

Memerlukan ApsaraVideo Player SDK v6.8.0 atau lebih baru.

✔️

✔️

Memerlukan ApsaraVideo Player SDK v7.8.0 atau lebih baru. Tidak didukung di Flutter.

VidAuth-based playback

✔️

✔️

✔️

VidSts-based playback

✔️

✔️

✔️

✔️

Tidak didukung di Flutter.

UrlSource-based live streaming

✔️

✔️

Memerlukan ApsaraVideo Player SDK v7.8.0 atau lebih baru. Tidak didukung di Flutter.

LiveStsSource-based live streaming

✔️

✔️

✔️

✔️

Tidak didukung di Flutter.

Ikhtisar enkripsi

Enkripsi video Alibaba Cloud (enkripsi privat)

Enkripsi Video Alibaba Cloud (Enkripsi Privat) mengenkripsi data video sehingga tetap terenkripsi bahkan setelah diunduh, mencegah redistribusi dan hotlinking yang tidak sah. Enkripsi Video Alibaba Cloud (Enkripsi Privat).

Alibaba Cloud Player SDK menangani dekripsi dan interaksi sisi server. Anda hanya perlu mengonfigurasi transkoding terenkripsi dan mengintegrasikan SDK.

Penting
  • Enkripsi Video Alibaba Cloud (Enkripsi Privat) gratis, tetapi transkoding media diperlukan untuk enkripsi dan dikenai biaya. Penagihan transkoding media.

Konfigurasikan enkripsi pribadi

Untuk mengonfigurasi Enkripsi Video Alibaba Cloud, ikuti Panduan langkah demi langkah.

Batasan

Enkripsi Video Alibaba Cloud (Enkripsi Privat) mendukung enkripsi untuk video dalam format HLS, FLV, dan MP4. Video ini hanya dapat diputar dengan Alibaba Cloud Player. Klien web hanya mendukung pemutaran HLS, sedangkan klien native mendukung semua format tersebut.

Enkripsi video Alibaba Cloud (enkripsi privat berbasis lisensi)

Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) dibangun di atas Enkripsi Privat dan memungkinkan pemutaran langsung dari URL video terenkripsi, meningkatkan kecepatan startup. Metode ini ideal untuk skenario video pendek dan drama pendek.

Penting
  • Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) gratis, tetapi transkoding media diperlukan untuk enkripsi dan dikenai biaya. Penagihan transkoding media.

Konfigurasikan Enkripsi Privat Berbasis Lisensi

Untuk mengonfigurasi Enkripsi Video Alibaba Cloud, ikuti Panduan langkah demi langkah.

Batasan

Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) mendukung enkripsi untuk video dalam format HLS dan MP4. Video terenkripsi ini hanya dapat diputar dengan Alibaba Cloud Player.

Enkripsi standar HLS

Enkripsi HLS Standar menggunakan AES-128 untuk mengenkripsi konten video. Metode ini kompatibel dengan semua pemutar HLS, termasuk yang dikembangkan sendiri dan open-source, tetapi lebih kompleks untuk diimplementasikan dan kurang aman dibandingkan metode proprietari. Enkripsi HLS Standar.

Penting

Enkripsi HLS Standar gratis, tetapi transkoding media diperlukan untuk enkripsi dan dikenai biaya. Penagihan transkoding media.

Konfigurasikan Enkripsi HLS Standar

Untuk mengonfigurasi Enkripsi HLS Standar, ikuti Panduan integrasi.

Batasan

Enkripsi HLS Standar kompatibel dengan berbagai pemutar HLS. Topik ini menggunakan Alibaba Cloud Player sebagai contoh. Alibaba Cloud Player mendukung penerusan 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 dengan skema Widevine dan FairPlay, menyediakan solusi satu atap untuk mengelola video berhak cipta. Enkripsi DRM.

Penting

Enkripsi DRM diterapkan selama transkoding (biaya transkoding media berlaku). Biaya lisensi DRM berlaku saat klien meminta lisensi pemutaran. Penagihan DRM.

Konfigurasikan Enkripsi DRM

Aktifkan fitur ini di konsol ApsaraVideo Live dan ApsaraVideo VOD: Konfigurasikan enkripsi DRM untuk ApsaraVideo Live dan Konfigurasikan enkripsi DRM untuk ApsaraVideo VOD.

Batasan

Saat ini, video terenkripsi DRM hanya dapat diputar dengan Alibaba Cloud Player.

Enkripsi DRM pihak ketiga

ApsaraVideo VOD mendukung enkripsi DRM pihak ketiga, memungkinkan alur kerja end-to-end mulai dari produksi video di ApsaraVideo for Media Processing melalui enkripsi DRM pihak ketiga hingga pemutaran dengan Alibaba Cloud Player SDK.

Penting

Enkripsi DRM diterapkan selama transkoding (biaya transkoding media berlaku). Biaya lisensi DRM berlaku saat klien meminta lisensi pemutaran. Penagihan DRM.

Konfigurasikan Enkripsi DRM

Aktifkan fitur ini di konsol ApsaraVideo for Media Processing. Live Packaging dan VOD Packaging.

Klien web

Catatan
  • Sebelum menggunakan ApsaraVideo Player SDK for Web, tinjau kompatibilitas browser untuk enkripsi proprietari Alibaba Cloud.

  • Karena alasan keamanan, enkripsi proprietari Alibaba Cloud tidak mengizinkan debug menggunakan video terenkripsi asli.

Prosedur

Sisipkan pemutar web ke halaman web Anda.

  1. Ikuti panduan Mulai cepat untuk mengimpor ApsaraVideo Player SDK for Web ke halaman Anda.

  2. Pilih metode enkripsi dan mulai pemutaran.

    Kode berikut menunjukkan cara menyisipkan pemutar.

Enkripsi proprietari Alibaba Cloud

VOD (VidAuth)

Untuk memutar video yang dienkripsi dengan enkripsi proprietari Alibaba Cloud menggunakan metode ApsaraVideo VOD VidAuth, Anda juga harus meneruskan parameter encryptType: 1 untuk mengaktifkan enkripsi proprietari. Parameter 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 Proprietari 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 media library > 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 proprietari. Parameter ini tidak diperlukan untuk kasus lain.
                playConfig:{EncryptType:'AliyunVoDEncryption'}, // Wajib jika aliran M3U8 Anda juga berisi aliran lain yang tidak menggunakan enkripsi proprietari.
                // 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 telah dibuat.')
             });
          </script>
      </body>
  </html>

Live (LiveStsSource)

Untuk memutar aliran live yang menggunakan enkripsi proprietari dengan metode LiveStsSource, Anda harus menyediakan URL aliran dan kredensial sementara STS. Untuk informasi tentang cara menghasilkan kredensial, lihat Dapatkan 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 Proprietari Live</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 live.
               source: '<your live stream url>',// Wajib. URL pemutaran aliran live HLS dengan enkripsi proprietari.
               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 live.
               app:'<your App Name>',// Wajib. Nama Aplikasi dari aliran live.
               stream:'<your Stream Name>',// Wajib. NamaStream dari aliran live 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 telah dibuat.')
            });
         </script>
     </body>
 </html>
Catatan
  • 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:

    Pada iOS versi sebelum 17.1, enkripsi proprietari memerlukan plugin berbasis teknologi Service Worker. Kebijakan keamanan browser membatasi service worker hanya untuk skrip same-origin, sehingga Anda harus menyebarkan plugin ke domain yang sama dengan situs web Anda.

    1. Unduh skrip: https://g.alicdn.com/apsara-media-box/imp-web-player/<version_number>/aliplayer-worker-min.js

    2. Sebarkan skrip: Misalnya, jika situs web pemutaran video Anda adalah https://www.aliyun.com/a/b.html, Anda harus menyebarkan skrip ke https://www.aliyun.com/a/aliplayer-worker-min.js, yang berada di direktori yang sama dengan halaman web.

    3. Masukkan URL ini saat Anda 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), tambahkan domain Anda ke WKAppBoundDomains dalam file Info.plist aplikasi untuk mengaktifkan Service Worker di WKWebView. App-Bound Domains.

Enkripsi standar HLS

VOD (VidAuth)

Saat memutar video dengan enkripsi HLS standar menggunakan metode ApsaraVideo VOD VidAuth, jika video juga memiliki aliran lain yang tidak dienkripsi HLS standar atau aliran transkoding standar, Anda dapat mengatur parameter EncryptType menjadi HLSEncryption untuk memfilter dan hanya memutar aliran terenkripsi HLS standar.

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 HLS standar menggunakan metode ApsaraVideo VOD VidSts, jika video juga memiliki aliran lain yang tidak dienkripsi HLS standar atau aliran transkoding standar, Anda dapat mengatur parameter EncryptType menjadi HLSEncryption untuk memfilter dan hanya memutar aliran terenkripsi HLS standar.

let player = new Aliplayer({
   id: 'J_prismPlayer',
   vid : '<your video ID>', // Wajib. ID video. Anda dapat memperoleh ID dari konsol ApsaraVideo VOD (media library > 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 live atau on-demand yang menggunakan enkripsi HLS standar 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 live atau on-demand.
    isLive: true, // Atur ke true untuk streaming live.
  });

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 media library > 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 telah dibuat.')
            });
         </script>
     </body>
 </html>

Live (LiveStsSource)

Untuk memutar aliran live terenkripsi DRM menggunakan metode LiveStsSource, berikan URL aliran dan kredensial sementara STS. Untuk informasi tentang cara menghasilkan kredensial sementara STS, lihat Dapatkan 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 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 live.
               isDrm: true,
               source: '<your live stream url>',// Wajib. URL pemutaran aliran live 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 telah dibuat.')
            });
         </script>
     </body>
 </html>

Android

Prosedur

Integrasikan Alibaba Cloud Player SDK untuk Android ke dalam aplikasi Anda. Bagian berikut menyediakan langkah-langkah dan kode contoh.

  1. Integrasikan Alibaba Cloud Player SDK untuk Android.

    Integrasikan SDK.

  2. Buat pemutar untuk memutar video.

    Ikuti Fitur dasar. Pada Langkah 3. Buat DataSource, pilih salah satu metode berikut 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 transkoding. Sebelum transkoding, ikat lisensi di bawah akun yang sama (Kelola Lisensi), lalu atur parameter EncryptType saat Anda membuat kelompok template transkoding. Contoh:

Penting

Setelah membuat template, jangan ubah atau simpan di konsol. Jika tidak, metode enkripsi akan ditimpa.

[{
        "TranscodeTemplateId": "",
	"TemplateName": "740P H.264 HLS 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"
	}
}]

VidAuth

Saat Anda 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 menjadi 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 player SDK V5.5.5.0 dan lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menyelesaikannya. Untuk versi sebelumnya, parameter ini wajib. 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 Anda 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 menjadi 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 sementara STS. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari kredensial sementara STS. 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 live terenkripsi privat dalam format HLS atau FLV menggunakan objek ApsaraVideo Live LiveSts, Anda harus meneruskan URL dan kredensial STS, dan mengatur jenis enkripsi video menjadi AliEncryption. Kode berikut memberikan contoh:

  1. Buat sumber data.

    Anda harus meneruskan LiveSts 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 kredensial sementara STS. Untuk memperolehnya, panggil operasi STS AssumeRole.
    liveSts.setAccessKeySecret("<your AccessKey Secret>");// Wajib. Rahasia AccessKey dari kredensial sementara STS. 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 dari 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();
  2. Dengarkan invalidasi STS.

    Selama pemutaran live 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;
        }
    });
    Catatan

    Setelah berhasil memperoleh kredensial STS baru, Anda harus memanggil metode updateLiveStsInfo untuk 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 Video Alibaba Cloud (enkripsi privat berbasis lisensi)

Catatan penggunaan

Video HLS yang dienkripsi dengan Enkripsi Video Alibaba Cloud (Enkripsi Privat Berbasis Lisensi) dapat diputar menggunakan URL setelah transkoding. Sebelum transkoding, ikat lisensi di bawah akun yang sama (Kelola Lisensi), lalu atur parameter EncryptType saat Anda membuat kelompok template transkoding. Contoh:

Penting

Setelah membuat template, jangan ubah atau simpan di konsol. Jika tidak, metode enkripsi akan ditimpa.

[{
        "TranscodeTemplateId": "",
	"TemplateName": "740P H.264 HLS 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"
	}
}]

UrlSource

Catatan

Hanya Alibaba Cloud Player SDK untuk Android V6.8.0 dan lebih baru yang mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan UrlSource. Versi V6.17.0 dan 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 parameter 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);

// Pra-muat
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");

Enkripsi HLS standar

VidAuth

Saat Anda 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 menjadi HLSEncryption untuk hanya memutar aliran terenkripsi HLS standar. Kode berikut memberikan contoh:

Penting

Jika Anda mengaktifkan Rewrite standard HLS encryption M3U8 files, 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 player SDK V5.5.5.0 dan lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menyelesaikannya. Untuk versi sebelumnya, parameter ini wajib. 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 Anda 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 menjadi HLSEncryption untuk hanya memutar aliran terenkripsi HLS standar. Kode berikut memberikan contoh:

Penting

Jika Anda mengaktifkan Rewrite standard HLS encryption M3U8 files, 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 sementara STS. Untuk memperolehnya, panggil operasi STS AssumeRole.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari kredensial sementara STS. 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.

Penting

Jika Anda mengaktifkan Rewrite standard HLS encryption M3U8 files, 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 live atau on-demand yang menggunakan enkripsi HLS standar.
        aliPlayer.setDataSource(urlSource);

Enkripsi DRM Alibaba Cloud

Catatan

Di Android, kami sarankan menggunakan SurfaceView untuk memastikan pemutaran video yang memiliki tingkat keamanan tinggi berjalan dengan baik.

VidSts

Pertama, konfigurasikan enkripsi DRM seperti dijelaskan dalam Konfigurasikan enkripsi DRM untuk ApsaraVideo VOD. Saat Anda memutar video terenkripsi DRM menggunakan ApsaraVideo VOD VidSts, konfigurasinya sama seperti untuk 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 sementara STS. Untuk memperolehnya, panggil operasi STS AssumeRole.
        vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib. Rahasia AccessKey dari kredensial sementara STS. 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 dijelaskan dalam Konfigurasikan enkripsi DRM untuk ApsaraVideo Live. Untuk memutar aliran live terenkripsi DRM menggunakan objek LiveSts, Anda harus meneruskan URL dan kredensial STS, dan mengatur jenis enkripsi video menjadi WideVine_FairPlay. Kode berikut memberikan contoh:

  1. Buat sumber data.

    Anda harus meneruskan LiveSts 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 kredensial sementara STS. Untuk memperolehnya, panggil operasi STS AssumeRole.
    liveSts.setAccessKeySecret("<your AccessKey Secret>");// Wajib. Rahasia AccessKey dari kredensial sementara STS. 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 dari 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();
  2. Dengarkan invalidasi STS.

    Selama pemutaran live 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;
        }
    });
    Catatan

    Setelah berhasil memperoleh kredensial STS baru, Anda harus memanggil metode updateLiveStsInfo untuk 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

Catatan

Fitur ini memerlukan player SDK V7.8.0 atau lebih baru.

UrlSource

Catatan
  • Fitur ini hanya mendukung skema DRM Widevine untuk protokol HLS dan DASH.

Pertama, lihat VOD packaging untuk mengonfigurasi enkripsi DRM. Saat Anda 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 akan melaporkan kesalahan melalui callback onError.
            return response;
        } else {
            // Tangani pengecualian. Pemutar akan memanggil onError dan melaporkan kesalahan terkait.
            return null;
        }
    }
});

iOS

Prosedur

Integrasikan Player SDK untuk iOS ke dalam aplikasi Anda. Langkah-langkah dan kode contohnya sebagai berikut:

  1. Integrasikan Player SDK untuk iOS.

    Integrasikan SDK.

  2. Buat pemutar untuk memuat dan memutar video.

    Ikuti Fitur Dasar. Di Langkah 3. Buat sumber data, gunakan salah satu metode berikut berdasarkan kebutuhan Anda.

Enkripsi privat Alibaba Cloud

VidAuth untuk VOD

Saat Anda 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 menjadi 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 Player SDK V5.5.5.0 dan lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menguraikannya. Untuk versi SDK sebelum 5.5.5.0, parameter ini wajib. 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 Anda 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 menjadi 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 sementara STS. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari kredensial sementara STS. 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 live

Untuk memutar aliran live terenkripsi privat dalam format HLS atau FLV menggunakan metode LiveStsSource, Anda harus menyediakan URL aliran dan kredensial STS, dan mengatur jenis enkripsi video menjadi ENCRYPTION_TYPE_ALIVODENCRYPTION. Kode berikut memberikan contoh:

  1. Buat sumber data.

    Anda harus meneruskan AVPLiveStsSource sebagai 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];
  2. Dengarkan invalidasi kredensial STS.

    Selama pemutaran live 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;
    }];
    Catatan

    Setelah memperoleh kredensial STS baru, Anda harus memanggil metode updateLiveStsInfo untuk 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

Catatan

Hanya Player SDK untuk iOS V6.8.0 dan lebih baru yang mendukung pemutaran video MP4 terenkripsi privat berbasis lisensi menggunakan UrlSource. V6.17.0 dan 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"];

// Pra-muat
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];

Enkripsi standar HLS

VidAuth untuk VOD

Saat Anda memutar video yang dienkripsi menggunakan enkripsi HLS standar dengan metode VidAuth ApsaraVideo VOD, jika video juga memiliki aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi menjadi HLSEncryption untuk hanya memutar aliran dengan enkripsi HLS standar. Kode berikut memberikan contoh:

Penting

Jika Anda mengaktifkan M3U8 standard encryption rewriting, 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 Player SDK V5.5.5.0 dan lebih baru. Anda tidak perlu mengatur wilayah karena pemutar secara otomatis menguraikannya. Untuk versi SDK sebelum 5.5.5.0, parameter ini wajib. 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 Anda memutar video yang dienkripsi menggunakan enkripsi HLS standar dengan metode VidSts ApsaraVideo VOD, jika video juga memiliki aliran tidak terenkripsi atau aliran transkoding standar, atur jenis enkripsi menjadi HLSEncryption untuk hanya memutar aliran dengan enkripsi HLS standar. Kode berikut memberikan contoh:

Penting

Jika Anda mengaktifkan M3U8 standard encryption rewriting, 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 sementara STS. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari kredensial sementara STS. 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 HLS standar, 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.

Penting

Jika Anda mengaktifkan M3U8 standard encryption rewriting, 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 live atau on-demand dengan enkripsi standar HLS.
[self.player setUrlSource:urlSource];

Enkripsi DRM Alibaba Cloud

Catatan

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 Anda 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 sementara STS. Anda dapat memperoleh kredensial ini dengan memanggil operasi AssumeRole STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Wajib. ID AccessKey dari kredensial sementara STS. 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 live

Pertama, lihat Konfigurasikan Enkripsi DRM untuk Streaming Live untuk mengonfigurasi enkripsi DRM. Untuk memutar aliran live terenkripsi DRM menggunakan metode LiveStsSource, Anda harus menyediakan URL aliran dan kredensial STS, dan mengatur jenis enkripsi video menjadi ENCRYPTION_TYPE_FAIRPLAY. Kode berikut memberikan contoh:

  1. Buat sumber data.

    Anda harus meneruskan AVPLiveStsSource sebagai 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];
  2. Pantau invalidasi kredensial STS.

    Selama pemutaran live 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;
    }];
    Catatan

    Setelah memperoleh kredensial STS baru, Anda harus memanggil metode updateLiveStsInfo untuk 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

Catatan
  • Fitur ini memerlukan Player SDK 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 Anda memutar video yang tidak dienkripsi DRM, Anda harus memanggil [self.player setPreferPlayerName:@""] untuk mengembalikan inti default.

UrlSource untuk FairPlay

Catatan
  • Hanya skema FairPlay melalui protokol HLS yang didukung.

Pertama, lihat Live Packaging untuk mengonfigurasi enkripsi DRM. Saat Anda 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 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";

    // 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 akan melaporkan kesalahan.
    return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}

Klien Flutter

Catatan

Klien Flutter tidak mendukung enkripsi DRM.

Prosedur

Integrasikan pemutar Flutter ke dalam aplikasi Anda. Langkah-langkah dan kode contohnya sebagai berikut:

  1. Integrasikan Alibaba Cloud Player SDK untuk Flutter.

    Integrasikan SDK.

  2. Buat pemutar untuk memutar video.

    Ikuti Fitur Dasar. Di Langkah 3. Buat sumber pemutaran, pilih salah satu metode berikut.

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 menjadi 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 menjadi 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

Catatan

SDK pemutar Flutter mendukung enkripsi privat berbasis lisensi dengan UrlSource untuk video MP4 mulai v6.8.0 dan lebih baru, serta untuk video HLS (bitrate tunggal dan bitrate adaptif) mulai v6.17.0 dan lebih baru.

Saat Anda memutar video dalam format HLS atau MP4 yang dienkripsi menggunakan enkripsi privat berbasis lisensi dengan pemutaran berbasis UrlSource, panggil operasi Obtain audio or video playback URL 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");

// Pra-muat.
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 menjadi HLSEncryption untuk hanya memutar aliran terenkripsi standar HLS. Kode berikut merupakan contoh:

Penting

Jika M3U8 Standard Encryption Rewrite 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 menjadi HLSEncryption untuk hanya memutar aliran terenkripsi standar HLS. Kode berikut merupakan contoh:

Penting

Jika M3U8 Standard Encryption Rewrite 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 live 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.

Penting

Setelah M3U8 Standard Encryption Rewrite 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 live atau on-demand terenkripsi standar HLS.
fAliplayer.setUrl("The playback URL");
fAliplayer.prepare();

FAQ

Permasalahan umum dan solusinya: FAQ Enkripsi Video.

Dokumen terkait