全部产品
Search
文档中心

CDN:Konfigurasikan Enkripsi dan Penulisan Ulang M3U8

更新时间:Dec 09, 2025

Saat client meminta file M3U8, fitur ini secara otomatis menambahkan parameter autentikasi dari permintaan ke URI kunci dalam tag #EXT-X-KEY, sehingga mengamankan akses ke kunci enkripsi tanpa mengubah origin dan mencegah pemutaran video yang tidak sah.

Kasus Penggunaan

Dalam alur kerja enkripsi HTTP Live Streaming (HLS) standar, tag #EXT-X-KEY menentukan URI untuk mengambil kunci dekripsi. Jika URI tersebut merupakan alamat publik tetap, siapa pun yang mendapatkan file M3U8 dapat mengunduh kunci dan mendekripsi konten video, sehingga enkripsi menjadi tidak efektif.

Untuk mengatasi masalah ini, fitur ini melampirkan token autentikasi dinamis yang dapat diverifikasi ke setiap permintaan kunci. Fitur ini ideal untuk skenario yang memerlukan kontrol akses terhadap kunci enkripsi HLS, seperti:

  • Video berbayar dan pendidikan online: Untuk mencegah pelanggan berbagi alamat M3U8 dengan pengguna non-pembayar, Anda dapat menghasilkan parameter autentikasi unik untuk setiap pengguna yang login. Ini memastikan hanya pengguna yang berwenang yang dapat mengambil kunci dekripsi dalam periode validitasnya.

  • Perlindungan hak cipta streaming langsung: Untuk acara olahraga besar atau siaran langsung, Anda dapat menggabungkan parameter autentikasi yang dihasilkan secara dinamis dengan fitur autentikasi URL CDN. Ini memungkinkan kontrol akses detail halus terhadap aliran langsung dan secara efektif mencegah hotlinking.

Cara Kerja

  1. Client mengirim permintaan ke Application Server Anda. Berdasarkan logika bisnis Anda (misalnya, login pengguna), Application Server menghasilkan parameter autentikasi dengan periode validitas dan signature (contohnya, token=xxxx) lalu mengembalikannya ke client.

  2. Client menambahkan parameter autentikasi ini ke akhir URL permintaan file M3U8 dan mengirim permintaan ke titik kehadiran (POP) CDN.

  3. Sebelum mengembalikan file M3U8, POP CDN mengurai isinya, menemukan tag #EXT-X-KEY, lalu menambahkan parameter autentikasi dari URL permintaan client ke akhir atribut URI tag tersebut.

  4. Client menerima file M3U8 yang telah dimodifikasi dari CDN dan mengirim permintaan ke Key Server menggunakan URI kunci baru yang kini mencakup parameter autentikasi.

  5. Key Server menerima permintaan kunci, mengekstrak parameter autentikasi dari URL, lalu memvalidasinya. Jika validasi berhasil, server mengembalikan Key dekripsi; jika tidak, permintaan ditolak.

  6. Setelah mendapatkan Key, client mendekripsi segmen video TS dan memulai pemutaran.

Penting
  • Fitur ini tidak mengenkripsi konten video. Sebelum menggunakan fitur ini, Anda harus mengenkripsi segmen video (file TS) di server origin menggunakan enkripsi HLS, seperti AES-128. File M3U8 asli juga harus berisi tag #EXT-X-KEY yang benar. Untuk informasi lebih lanjut tentang enkripsi, lihat Bagaimana cara menghasilkan playlist HLS (M3U8) terenkripsi AES-128 dengan FFmpeg?

  • Istilah business server dan key server disebutkan untuk menjelaskan peran enkripsi dan penulisan ulang M3U8. Fitur ini tidak mengimplementasikan business server atau key server. Anda harus mengimplementasikan fungsionalitas business server dan key server untuk menyelesaikan proses autentikasi kunci HLS.

  • Tag #EXT-X-KEY menentukan apakah konten dienkripsi. Untuk informasi lebih lanjut tentang tag file M3U8, lihat Pengenalan Tag M3U8.

Prosedur

  1. Login ke CDN console.

  2. Di panel navigasi kiri, klik Domain Names.

  3. Pada halaman Domain Names, temukan nama domain target dan klik Manage di kolom Actions.

  4. Di panel navigasi domain, klik Video.

  5. Di bagian M3U8 Encryption and Rewrite, aktifkan M3U8 Encryption and Rewrite.

    开启M3U8标准加密改写

    Catatan

    Setelah Anda mengaktifkan M3U8 Encryption and Rewrite, nama parameter default-nya adalah MtsHlsUriToken.

  6. Opsional: Untuk mengubah nama parameter agar sesuai dengan client Anda, ikuti langkah-langkah berikut:

    1. Klik Modify di samping Custom Parameter Name.

    2. Di kotak dialog Custom Parameter Name, atur Parameter Name.

      设置参数名

      Catatan

      Nama parameter bersifat case-sensitive. Pastikan nama parameter yang Anda atur identik dengan yang disertakan dalam permintaan client. Misalnya, jika permintaan client menyertakan parameter MtsHlsUriToken, nama parameter kustom mtshlsuritoken tidak akan berlaku.

    3. Klik OK.

Contoh

  1. Akses file M3U8 yang dipercepat CDN di browser Anda dan tambahkan MtsHlsUriToken=tokenxxxxx ke akhir URL permintaan. Contohnya: http://<CDN Accelerated Domain Name>/video.m3u8?MtsHlsUriToken=tokenxxxxx

    Di panel Network developer tools browser Anda, permintaan untuk file M3U8 mencakup parameter kustom, tetapi permintaan kunci berikutnya tidak.

    image

  2. Di CDN console, aktifkan M3U8 Encryption and Rewrite. Atur nama parameter kustom sesuai kebutuhan. Contoh ini menggunakan parameter default MtsHlsUriToken, seperti yang ditunjukkan pada gambar berikut.示例1

  3. Ulangi langkah 1. Akses file M3U8 yang dipercepat CDN di browser dan tambahkan MtsHlsUriToken=tokenxxxxx ke akhir permintaan.

    Di tab Network developer tools browser, permintaan untuk alamat kunci sekarang mencakup parameter kustom.

    image

FAQ

Apa itu protokol HLS?

HLS (HTTP Live Streaming) adalah protokol streaming adaptif berbasis HTTP yang dikembangkan oleh Apple. Protokol ini memungkinkan pemutaran video dengan cara client mengunduh serangkaian segmen video pendek melalui HTTP standar.

Protokol ini bekerja menggunakan dua komponen utama:

  • Segmen Media (.ts files): Aliran video dibagi menjadi potongan-potongan kecil, biasanya dalam format Transport Stream (TS).

  • File Daftar Putar (.m3u8 file): File teks biasa yang berfungsi sebagai daftar putar. File ini mencantumkan segmen media yang tersedia dan metadata terkait. Saat pemutaran dimulai, client pertama-tama mengunduh file M3U8 untuk mengetahui segmen mana yang harus diambil dan urutannya.

Apa saja tag utama dalam daftar putar HLS M3U8 dan apa fungsinya?

File M3U8 adalah daftar putar berbasis teks yang menggunakan tag untuk menyusun aliran dan menyediakan metadata kepada pemutar. Berikut adalah tag paling umum beserta fungsinya:

  • #EXTM3U: Header file M3U8. Harus menjadi baris pertama file.

  • #EXT-X-MEDIA-SEQUENCE: Nomor seri segmen TS pertama. Nilainya biasanya 0. Dalam skenario streaming langsung, nomor seri ini mengidentifikasi posisi awal segmen langsung. Contohnya: #EXT-X-MEDIA-SEQUENCE:0.

  • #EXT-X-TARGETDURATION: Durasi maksimum setiap segmen TS. Misalnya, #EXT-X-TARGETDURATION:10 menunjukkan bahwa durasi maksimum setiap segmen adalah 10 detik.

  • #EXT-X-ALLOW-CACHE: Menunjukkan apakah client dapat menyimpan cache segmen. Nilainya bisa berupa #EXT-X-ALLOW-CACHE:YES atau #EXT-X-ALLOW-CACHE:NO. Nilai default-nya adalah YES.

  • #EXT-X-ENDLIST: Tag akhir untuk file M3U8.

  • #EXTINF: Informasi tambahan (extra info) tentang segmen TS, seperti durasi dan bandwidth-nya. Formatnya biasanya #EXTINF:<duration>,[<title>]. Nilai sebelum koma adalah durasi segmen TS saat ini. Durasi segmen harus kurang dari atau sama dengan nilai tag #EXT-X-TARGETDURATION.

  • #EXT-X-VERSION: Nomor versi M3U8.

  • #EXT-X-DISCONTINUITY: Tag ini menunjukkan jeda antara segmen sebelumnya dan segmen berikutnya.

  • #EXT-X-PLAYLIST-TYPE: Menunjukkan jenis media streaming.

  • #EXT-X-KEY: Menunjukkan apakah dekripsi diperlukan. Contohnya: #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/video.key?token=xxx". Contoh ini menunjukkan bahwa algoritma enkripsi adalah AES-128. Kunci diperoleh dengan mengirim permintaan ke https://example.com/video.key?token=xxx. Setelah kunci diperoleh, kunci tersebut disimpan secara lokal dan digunakan untuk mendekripsi file video TS berikutnya.

Bagaimana cara menghasilkan playlist HLS (M3U8) terenkripsi AES-128 dengan FFmpeg?

Anda dapat menghasilkan aliran HLS terenkripsi menggunakan OpenSSL untuk membuat kunci dan FFmpeg untuk membagi dan mengenkripsi video. Ikuti langkah-langkah berikut:

  1. Buat kunci enkripsi.

    Untuk enkripsi AES-128, kuncinya biasanya berupa string acak 16 byte. Gunakan perintah OpenSSL berikut untuk menghasilkan file kunci acak:

    openssl rand 16 > encryption_key.key
  2. Siapkan file key_info.txt untuk enkripsi. Alat enkripsi menggunakan file ini untuk mengenkripsi file video HLS.

    https://example.com/encryption_key.key
    /path/to/local/encryption_key.key
    • Baris pertama adalah URL kunci enkripsi yang Anda hasilkan di Langkah 1. Tempatkan file kunci dalam Bucket OSS yang dipercepat CDN. Kemudian, gunakan nama domain yang dipercepat CDN untuk mengakses file tersebut.

    • Baris kedua adalah jalur mutlak file kunci lokal.

  3. Gunakan tool FFmpeg untuk menghasilkan dan mengenkripsi file video HLS.

    ffmpeg -i input_video.mp4 -c:v copy -c:a copy -hls_time 10 -hls_key_info_file key_info.txt -hls_list_size 0 output_playlist.m3u8
    • -i input_video.mp4: Menentukan file video yang akan diubah, seperti video MP4.

    • -c:v copy: Menyalin aliran video tanpa re-encoding.

    • -c:a copy: Menyalin aliran audio tanpa re-encoding.

    • -hls_time 10: Mengatur durasi setiap file TS menjadi 10 detik. Anda dapat mengubah pengaturan ini berdasarkan durasi video sumber.

    • -hls_key_info_file key_info.txt: Menentukan file yang berisi informasi kunci enkripsi.

    • -hls_list_size 0: Menentukan jumlah entri file TS yang disimpan dalam daftar putar M3U8. Nilai 0 menyimpan semua entri file .ts.

    • output_playlist.m3u8: Nama file daftar putar HLS output (file M3U8).

  4. Unggah file output_playlist.m3u8 yang dihasilkan, semua segmen .ts, dan file encryption_key.key ke server web atau Origin OSS Anda. Pemutar kemudian dapat mengakses aliran terenkripsi menggunakan URL M3U8.