HLS: apa itu, protokol dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-05-23 Waktu membaca: 9 mnt

HTTP Live Streaming (HLS) — adalah protokol transmisi streaming adaptif data media yang dikembangkan oleh Apple. HLS mengirimkan video dan audio melalui koneksi HTTP, membagi konten menjadi urutan file-segmen kecil dan mengelola pemutaran melalui daftar putar teks dalam format M3U8. Menurut Sandvine Internet Phenomena Report (2025), HLS memproses lebih dari 65% lalu lintas streaming video adaptif global. Protokol ini didukung di semua platform Apple dan melalui pustaka pihak ketiga tersedia di Android, Windows, dan Smart TV.

Poin Utama

  • HLS — adalah protokol streaming adaptif dari Apple, berbasis HTTP dan menggunakan daftar putar M3U8 untuk mengelola aliran.
  • Adaptif HLS memungkinkan peralihan otomatis antar bitrate tergantung pada kecepatan internet pengguna.
  • Daftar putar master.m3u8 dan file segmen .ts atau .m4s membentuk arsitektur dasar aliran HLS.
  • Perlindungan konten dilakukan melalui enkripsi AES-128 dan dukungan sistem DRM (FairPlay Streaming, Widevine).
  • Latensi HLS dikurangi menjadi 2-6 detik berkat Low-Latency HLS (LL-HLS) yang diperkenalkan pada tahun 2020.

Apa itu HLS?

HTTP Live Streaming (HLS) — adalah protokol streaming media yang dikembangkan oleh Apple pada tahun 2009 dan pertama kali diperkenalkan di iOS 3.0 dan Safari. Pada tahun 2017, protokol ini diusulkan sebagai standar internet melalui RFC 8216, yang menegaskan statusnya sebagai spesifikasi terbuka yang tersedia untuk implementasi di platform mana pun.

Gagasan utama HLS adalah membagi aliran media berkelanjutan menjadi segmen pendek berdurasi 2-10 detik. Setiap segmen adalah file mandiri yang dapat diunduh melalui permintaan HTTP biasa. Manajemen aliran dilakukan melalui daftar putar teks dalam format M3U8, yang berisi tautan ke segmen dan metadata untuk pemutaran yang benar.

Adaptif — adalah keunggulan utama HLS. Server menyiapkan beberapa versi konten yang sama dengan bitrate berbeda — dari 200 Kbps untuk koneksi lemah hingga 20+ Mbps untuk video 4K. Klien secara otomatis memilih bitrate yang sesuai berdasarkan bandwidth saluran saat ini. Menurut penelitian Apple (WWDC 2024), LL-HLS mengurangi waktu peralihan antar bitrate hingga 500 milidetik, memastikan perubahan kualitas yang mulus tanpa jeda yang terlihat.

Sejarah pengembangan HLS

Versi pertama HLS (2009) hanya mendukung segmen MPEG-2 TS dengan codec audio AAC dan codec video H.264. Di iOS 8 (2014), dukungan untuk segmen fMP4 (fragmented MP4) ditambahkan, memungkinkan penggunaan HLS dengan codec yang lebih modern, termasuk HEVC (H.265). iOS 11 (2017) memperkenalkan dukungan untuk HDR10 dan Dolby Vision. iOS 13 (2019) memperkenalkan Low-Latency HLS, mengurangi latensi dari 6-30 detik tradisional menjadi 2-6 detik.

Pada tahun 2023, Apple memperluas HLS dengan dukungan untuk codec AV1 dan EVC (Essential Video Coding), serta mengimplementasikan Content Steering — mekanisme pengalihan dinamis klien antar server CDN untuk pemuatan optimal. Content Steering memungkinkan server mengubah URL segmen dengan cepat, mengarahkan klien ke node CDN terdekat atau paling tidak terbebani tanpa mengganggu pemutaran.

Bagaimana cara kerja HLS?

Arsitektur HLS terdiri dari tiga komponen utama: bagian server (server asal + encoder), jaringan distribusi (CDN), dan bagian klien (pemutar dengan dukungan HLS). Seluruh proses — dari pengambilan video hingga pemutaran di perangkat pengguna — mencakup beberapa tahap berturut-turut, yang masing-masing penting untuk kualitas streaming.

Pengkodean dan segmentasi

Video sumber pertama-tama dikodekan menjadi beberapa varian dengan bitrate dan resolusi berbeda. Encoder profesional seperti FFmpeg atau AWS Elemental MediaConvert secara bersamaan membuat 4-12 varian aliran: dari 240p (400 Kbps) hingga 4K (40 Mbps). Setiap varian dipotong menjadi segmen dengan durasi yang sama, biasanya 2-6 detik untuk LL-HLS atau 6-10 detik untuk HLS tradisional.

Untuk setiap varian, daftar putar media (variant playlist) dibuat yang berisi URL semua segmen dan durasinya. Selain itu, daftar putar master (master playlist) dibuat yang menggabungkan semua varian dan berisi informasi tentang masing-masing: resolusi, bitrate, codec, dan trek audio. Klien mengunduh daftar putar master terlebih dahulu, kemudian memilih varian yang sesuai berdasarkan analisis kecepatan koneksi.

Pengiriman melalui CDN

Segmen dan daftar putar di-cache di server CDN yang berlokasi secara geografis dekat dengan pengguna. Penggunaan protokol HTTP standar untuk pengiriman memberi HLS keunggulan penting: CDN, penyeimbang beban, atau server proksi apa pun yang mendukung HTTP akan bekerja dengan HLS tanpa konfigurasi tambahan. Ini membedakan HLS dari protokol waktu nyata seperti RTMP atau WebRTC yang memerlukan server khusus.

python
import subprocess

subprocess.run([
    "ffmpeg",
    "-i", "input.mp4",
    "-codec:v", "libx264",
    "-codec:a", "aac",
    "-hls_time", "6",
    "-hls_list_size", "0",
    "-var_stream_map", "v:0,a:0 v:1,a:1",
    "-map", "v:0", "-b:v:0", "5000k",
    "-map", "v:1", "-b:v:1", "1000k",
    "-f", "hls",
    "stream/output.m3u8"
])

Sisi klien menggunakan algoritma pemilihan bitrate (ABR — Adaptive Bitrate). Pemutar HLS mengunduh daftar putar master, menganalisis varian yang tersedia, dan memulai pemutaran dengan bitrate yang paling sesuai. Selama pemutaran, pemutar terus memantau kecepatan unduh segmen dan pengisian buffer, mengambil keputusan untuk beralih ke bitrate yang lebih tinggi atau lebih rendah. Algoritma ABR modern tidak hanya mempertimbangkan kecepatan jaringan, tetapi juga ukuran buffer, jenis konten, dan bahkan konsumsi daya perangkat.

Struktur aliran HLS: daftar putar dan segmen

Memahami struktur aliran HLS diperlukan untuk konfigurasi pengkodean, distribusi, dan debugging masalah pemutaran yang benar. Setiap aliran HLS terdiri dari dua tingkat daftar putar dan banyak segmen media, yang diatur dalam hierarki yang ketat.

Master Playlist (daftar putar master)

Master playlist — adalah titik masuk untuk pemutar HLS. File dengan ekstensi .m3u8 berisi tautan ke semua varian aliran (variant streams) dan karakteristiknya. Pemutar mengunduh file ini terlebih dahulu dan berdasarkan informasi tentang bitrate dan resolusi, membuat keputusan awal tentang pemilihan varian. Daftar putar master juga dapat berisi tautan ke trek audio alternatif, subtitle, dan daftar putar I-Frame untuk pemutaran cepat.

m3u8
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
1080p/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360
360p/video.m3u8

Media Playlist (daftar putar media)

Media playlist berisi langsung daftar segmen untuk satu varian aliran. Setiap segmen ditentukan dengan durasi dan URI. Daftar putar media dapat bersifat statis (untuk VOD — daftar lengkap semua segmen) atau diperbarui secara dinamis (untuk siaran langsung — segmen lama dihapus, segmen baru ditambahkan).

m3u8
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXTINF:6.000,
segment001.ts
#EXTINF:6.000,
segment002.ts
#EXT-X-ENDLIST

Format segmen

HLS mendukung dua format utama segmen media: MPEG-2 Transport Stream (.ts) dan Fragmented MP4 (.m4s atau .mp4). MPEG-2 TS — format HLS asli yang memberikan kompatibilitas maksimum. fMP4 — format yang lebih modern yang mendukung HDR, HEVC, dan kompresi yang lebih efisien. Apple merekomendasikan fMP4 untuk semua proyek baru mulai dari iOS 10 dan macOS Sierra.

Elemen tambahan aliran HLS mencakup daftar putar I-Frame untuk pemutaran cepat, metadata ID3 untuk sinkronisasi subtitle dan penanda iklan, serta Session Data untuk mengirimkan informasi tampilan ke server analitik. Semua elemen ini opsional, tetapi penggunaannya meningkatkan kualitas pengalaman pengguna.

Kelebihan dan kekurangan HLS

HLS mendominasi pasar streaming video berkat sejumlah keunggulan arsitektural, tetapi juga memiliki keterbatasan yang perlu dipertimbangkan saat memilih protokol untuk proyek tertentu. Mari bandingkan HLS dengan protokol pengiriman video alternatif.

KarakteristikHLSDASHRTMP
TransportHTTP (80/443)HTTP (80/443)TCP (1935)
AdaptifYa (ABR)Ya (ABR)Tidak
Latensi rendah2-6 dtk (LL-HLS)3-8 dtk (LL-DASH)0.5-2 dtk
Dukungan HDRYa (iOS 11+)YaTerbatas
iOS asliYa (Safari, AVPlayer)Melalui pemutar pihak ketigaTidak
Kemudahan CDNMaksimal (HTTP)Maksimal (HTTP)Server khusus

Keunggulan utama HLS — dukungan asli di semua perangkat Apple (iPhone, iPad, Apple TV, Mac) melalui AVPlayer bawaan. Ini menjadikan HLS standar de facto untuk aplikasi iOS/macOS. Selain itu, penggunaan HTTP standar untuk pengiriman memungkinkan cache konten di CDN dan server proksi mana pun tanpa konfigurasi tambahan, yang secara signifikan menyederhanakan infrastruktur pengiriman.

Kekurangan HLS mencakup latensi yang lebih tinggi dibandingkan dengan RTMP atau WebRTC untuk siaran langsung. Bahkan dengan LL-HLS, latensi minimum adalah 2-6 detik, yang tidak dapat diterima untuk skenario interaktif waktu nyata. HLS juga menghasilkan lebih banyak file di server (setiap segmen adalah file terpisah), yang dapat membebani sistem file pada jumlah siaran simultan yang besar.

HLS di aplikasi seluler

Integrasi HLS di aplikasi seluler berbeda tergantung platform. Di iOS dan macOS, HLS didukung di tingkat sistem operasi melalui AVFoundation dan AVPlayer, yang memberikan akselerasi perangkat keras decoding dan konsumsi daya minimal. Di Android, HLS tidak didukung oleh MediaPlayer bawaan, tetapi tersedia melalui ExoPlayer — pemutar media resmi dari Google.

HLS di iOS melalui AVPlayer

Di platform Apple, pemutaran HLS sangat sederhana berkat dukungan bawaan di AVPlayer. Cukup buat AVPlayer dengan URL daftar putar master, dan sistem akan secara otomatis menangani peralihan bitrate adaptif, pemilihan trek audio, dan pemrosesan subtitle. Pengembang memiliki akses ke kontrol penuh atas pemutaran melalui AVPlayerItem dan AVAssetResourceLoader.

swift
import AVFoundation

let url = URL(string: "https://example.com/stream.m3u8")!
let player = AVPlayer(url: url)
let controller = AVPlayerViewController()
controller.player = player
present(controller, animated: true) {
    player.play()
}

HLS di Android melalui ExoPlayer

Untuk Android digunakan ExoPlayer, yang mendukung HLS melalui modul ekstensi terpisah. ExoPlayer memberikan kontrol yang lebih halus atas aliran HLS: pemilihan bitrate dapat dikelola, buffering dapat dikonfigurasi, dan kesalahan pemuatan segmen dapat ditangani secara individual. Untuk LL-HLS diperlukan ExoPlayer versi 2.14.0 dan lebih tinggi.

kotlin
val player = ExoPlayer.Builder(this).build()

val uri = Uri.parse("https://example.com/stream.m3u8")
val mediaItem = MediaItem.fromUri(uri)

player.setMediaItem(mediaItem)
player.prepare()
player.play()

Optimalisasi HLS untuk jaringan seluler

Aplikasi seluler memerlukan pendekatan khusus untuk konfigurasi HLS karena ketidakstabilan jaringan seluler dan batasan lalu lintas. Rekomendasi utama meliputi: mengatur bitrate awal berdasarkan jenis jaringan (Wi-Fi atau seluler), menggunakan durasi segmen yang lebih pendek (2-4 detik) untuk adaptasi yang lebih cepat, memuat buffer terlebih dahulu saat beralih ke Wi-Fi, dan memprioritaskan trek audio pada sinyal lemah.

Apple dalam dokumentasi HLS Authoring Specification for Apple Devices (2024) merekomendasikan penggunaan ukuran segmen tidak lebih dari 6 detik untuk perangkat seluler dan setidaknya 4 varian bitrate. Untuk menghemat lalu lintas di jaringan seluler, server harus mengirimkan segmen dengan header HTTP Cache-Control, memungkinkan cache konten di server proksi perantara operator telekomunikasi.

Pertanyaan yang Sering Diajukan

Apa perbedaan HLS dengan video MP4 biasa?

MP4 — adalah wadah untuk menyimpan file video utuh yang harus diunduh sepenuhnya sebelum pemutaran dimulai. HLS membagi video menjadi segmen-segmen kecil dan memungkinkan menonton dimulai 2-6 detik setelah mengunduh segmen pertama, secara otomatis menyesuaikan kualitas dengan kecepatan internet.

Bisakah HLS digunakan tanpa server Apple?

Ya, HLS tidak memerlukan perangkat lunak server Apple. Server HTTP apa pun (Nginx, Apache, CDN) dapat mendistribusikan konten HLS. Untuk mengkodekan video ke HLS, gunakan FFmpeg atau encoder profesional. Satu-satunya persyaratan adalah konfigurasi tipe MIME yang benar untuk file .m3u8.

Apakah HLS mendukung siaran langsung?

Ya, HLS awalnya dirancang untuk siaran langsung. Pada siaran langsung, daftar putar media diperbarui secara dinamis: server menambahkan segmen baru dan menghapus yang lama. Low-Latency HLS (LL-HLS) mengurangi latensi menjadi 2-6 detik, membuat HLS cocok untuk siaran olahraga dan berita.

Mengapa daftar putar master diperlukan di HLS?

Master playlist menggabungkan semua varian konten yang sama dengan bitrate dan resolusi berbeda. Pemutar mengunduhnya terlebih dahulu, menganalisis karakteristik setiap varian (bitrate, resolusi, codec) dan memilih yang optimal untuk kondisi jaringan saat ini. Tanpa daftar putar master, peralihan kualitas adaptif tidak mungkin dilakukan.

Bagaimana cara melindungi konten HLS dari unduhan?

HLS mendukung enkripsi AES-128 segmen dan integrasi dengan sistem DRM: FairPlay Streaming (Apple), Widevine (Google), dan PlayReady (Microsoft). Kunci enkripsi dikirimkan melalui saluran aman terpisah. Untuk perlindungan tambahan, autentikasi token digunakan untuk akses ke daftar putar.

Ringkasan

  • HLS — protokol streaming adaptif dari Apple, berbasis HTTP, menggunakan daftar putar M3U8 dan segmen media.
  • Adaptif melalui beberapa varian bitrate (ABR) memastikan pemutaran yang lancar dalam kondisi jaringan apa pun.
  • LL-HLS mengurangi latensi siaran langsung menjadi 2-6 detik, mendekati indikator RTMP.
  • Di iOS HLS diputar melalui AVPlayer bawaan dengan akselerasi perangkat keras; di Android — melalui ExoPlayer.
  • Format segmen: MPEG-2 TS (.ts) untuk kompatibilitas dan fMP4 (.m4s) untuk HDR/HEVC.
  • Perlindungan konten melalui enkripsi AES-128 dan DRM (FairPlay, Widevine).
  • Direkomendasikan untuk proyek iOS/macOS dengan streaming dan solusi lintas platform melalui ExoPlayer di Android.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga