DASH — apa itu, protokol dan prinsip kerja streaming dinamis

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

Dynamic Adaptive Streaming over HTTP (DASH) adalah standar internasional untuk transmisi multimedia streaming adaptif yang dikembangkan oleh MPEG (Moving Picture Experts Group). DASH menyediakan pengiriman video dan audio melalui HTTP, menggunakan deskripsi streaming dalam format XML yang disebut Media Presentation Description (MPD) dan membagi konten menjadi segmen-segmen dengan bitrate yang berbeda. Menurut survei Bitmovin Video Developer Report (2025), 58% pengembang video menggunakan DASH, menjadikannya protokol paling populer kedua setelah HLS.

Poin Utama

  • DASH — adalah standar MPEG internasional terbuka untuk streaming adaptif melalui HTTP.
  • File MPD (Media Presentation Description) mengelola streaming melalui struktur XML dengan deskripsi periode dan set adaptasi.
  • Codec tidak dibatasi oleh spesifikasi — DASH mendukung H.264, HEVC, AV1, VP9, AAC, dan lainnya.
  • DRM diimplementasikan melalui Common Encryption (CENC), yang mendukung Widevine, PlayReady, dan FairPlay dalam satu aliran.
  • Lintas platform DASH disediakan melalui ExoPlayer (Android), dash.js (browser), dan libdash.

Apa itu DASH?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) — adalah standar internasional ISO/IEC 23009-1, yang diterbitkan pada tahun 2012 sebagai respons terhadap fragmentasi solusi streaming adaptif proprietary. Tidak seperti HLS (protokol proprietary Apple) dan Smooth Streaming (Microsoft), DASH sejak awal dikembangkan sebagai standar terbuka yang tidak terikat pada vendor tertentu, memastikan dukungan luas di industri.

Inovasi utama DASH — pemisahan deskripsi aliran dan konten media. Deskripsi aliran disimpan dalam file XML MPD (Media Presentation Description), yang berisi semua informasi tentang varian yang tersedia: bitrate, resolusi, codec, subtitle, trek audio. Konten media disimpan dalam segmen terpisah (biasanya fMP4), yang dapat diunduh secara independen melalui HTTP. Arsitektur semacam itu memungkinkan infrastruktur server menjadi sesederhana mungkin — server HTTP mana pun dapat mendistribusikan konten DASH.

Adaptivitas DASH diimplementasikan melalui multipleksing varian dari konten yang sama. Server menyiapkan beberapa Representasi — salinan konten dengan parameter kompresi yang berbeda. Klien menganalisis bandwidth saluran dan secara dinamis beralih di antara representasi, memilih rasio optimal antara kualitas dan stabilitas pemutaran. Menurut penelitian akademis (IEEE Access, 2024), DASH dengan algoritma BOLA menunjukkan 22% lebih sedikit peralihan bitrate dibandingkan dengan HLS pada koneksi yang tidak stabil.

Sejarah dan standardisasi DASH

MPEG memulai pekerjaan pada DASH pada tahun 2010 setelah menganalisis solusi yang ada: Apple HLS, Microsoft Smooth Streaming, dan Adobe HDS. Versi pertama standar (ISO/IEC 23009-1:2012) dirilis pada tahun 2012. Versi kedua (2014) menambahkan dukungan untuk event, penyisipan iklan yang ditingkatkan, dan Adaptasi yang Dikendalikan Server. Versi ketiga (2019) — dukungan untuk HDR, 8K, video taktil, dan integrasi yang lebih baik dengan MMT (MPEG Media Transport) untuk jaringan 5G.

Pada tahun 2024, MPEG mengumumkan DASH Next Generation, yang mencakup dukungan untuk codec neural network, rendering cloud, dan optimalisasi untuk skenario Extended Reality (XR). Inovasi utama — Neural Network-Based Video Coding (NNVC), yang menggunakan model ML untuk decoding di sisi klien, yang dapat mengurangi bitrate sebesar 30-50% sambil mempertahankan kualitas.

Bagaimana cara kerja DASH?

Proses pemutaran aliran DASH terdiri dari empat tahap berurutan: mendapatkan MPD, mengurai deskripsi aliran, memilih representasi awal, dan peralihan dinamis antar representasi. Setiap tahap memiliki kekhasan tersendiri yang memengaruhi kualitas pengalaman pengguna.

Mendapatkan dan mengurai MPD

Pemutar memuat file MPD dari URL yang diketahui. MPD berisi struktur XML dengan deskripsi seluruh aliran: durasi konten, skala waktu, periode yang tersedia (Period), set adaptasi (AdaptationSet), dan representasi (Representation) dengan parameter pengkodean tertentu. Pemutar mengurai MPD dan membuat model internal dari sumber daya media yang tersedia.

Contoh file MPD dasar untuk konten VOD dengan dua resolusi:

xml
<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
     profiles="urn:mpeg:dash:profile:isoff-live:2011"
     type="static"
     mediaPresentationDuration="PT1H30M">
    <Period duration="PT1H30M">
        <AdaptationSet mimeType="video/mp4">
            <Representation bandwidth="5000000"
                           width="1920" height="1080"
                           codecs="avc1.640028"/>
            <Representation bandwidth="1000000"
                           width="640" height="360"
                           codecs="avc1.64001E"/>
        </AdaptationSet>
    </Period>
</MPD>

Memuat segmen dan adaptasi

Setelah memilih representasi awal, pemutar mulai memuat segmen. Setiap segmen berisi beberapa detik konten (biasanya 2-10 detik). Pemutar mempertahankan buffer untuk beberapa segmen ke depan, memastikan ketahanan terhadap penurunan kecepatan jaringan jangka pendek. Algoritma pemilihan representasi (ABR) terus memantau kecepatan pemuatan segmen dan membuat keputusan tentang peralihan antara bitrate yang tersedia.

Algoritma ABR modern untuk DASH, seperti BOLA (Buffer Occupancy based Lyapunov Algorithm) dan Pensieve (berbasis Reinforcement Learning), tidak hanya mempertimbangkan bandwidth saat ini, tetapi juga ukuran buffer, jenis konten (olahraga, berita, film), dan bahkan konsumsi daya perangkat. BOLA, yang merupakan bagian dari dash.js dan ExoPlayer, meminimalkan jumlah peralihan bitrate sambil mempertahankan buffer yang stabil, sebagaimana dikonfirmasi oleh penelitian ACM (Spiteri et al., 2020).

Struktur DASH: MPD, Period, Adaptation Set

Struktur hierarkis aliran DASH diatur dalam empat tingkat: MPD → Period → AdaptationSet → Representation. Setiap tingkat menambahkan tingkat detail, memungkinkan deskripsi skenario yang kompleks — dari VOD sederhana hingga siaran langsung dengan sisipan iklan dan video multi-sudut.

MPD (Media Presentation Description)

MPD — elemen root, yang menggambarkan seluruh presentasi media. Atribut MPD menentukan jenis aliran (static untuk VOD, dynamic untuk langsung), durasi total, skala waktu, profil, dan informasi tentang DRM. MPD dapat berisi satu atau beberapa Period, yang masing-masing mewakili interval waktu konten yang independen.

Period, AdaptationSet, dan Representation

Period — segmen waktu dari presentasi. Untuk VOD, satu Period digunakan untuk seluruh konten. Untuk siaran langsung dengan sisipan iklan, Period dapat berubah secara dinamis — pemuat memuat MPD yang diperbarui dan mendeteksi Period baru yang sesuai dengan blok iklan. Setiap Period berisi satu atau beberapa AdaptationSet.

AdaptationSet — sekelompok representasi yang saling dipertukarkan dari jenis media yang sama: video, audio, subtitle. Di dalam AdaptationSet, semua representasi hanya berbeda dalam bitrate dan/atau resolusi, tetapi mengkodekan konten yang sama. Properti penting: pemutar dapat beralih di antara representasi dalam AdaptationSet yang sama pada batas segmen tanpa mengganggu pemutaran.

Representation — varian pengkodean tertentu dengan bitrate, resolusi, dan codec yang ditentukan. Untuk setiap Representasi, MPD menentukan template URL untuk memuat segmen. DASH menggunakan sistem pengalamatan segmen yang fleksibel — melalui template URL dengan substitusi nomor segmen dan waktu ($Number$, $Time$), yang memungkinkan server menghasilkan nama file secara dinamis tanpa perlu menyebutkan setiap segmen di MPD.

Segmentasi dan pengemasan

Segmen DASH dapat terdiri dari dua jenis: tipe Segment (hanya berisi data media) dan tipe Subsegment (bagian dari segmen untuk akses yang lebih granular). Untuk mengkodekan konten DASH, digunakan alat seperti FFmpeg atau encoder paket. Contoh pembuatan aliran DASH dari file input:

python
import subprocess

subprocess.run([
    "ffmpeg",
    "-i", "input.mp4",
    "-filter_complex",
    "[0:v]split=2[v1][v2];[v1]scale=1920:1080[v1out];[v2]scale=640:360[v2out]",
    "-map", "[v1out]", "-b:v:0", "5000k",
    "-map", "[v2out]", "-b:v:1", "1000k",
    "-map", "0:a",
    "-f", "dash",
    "-seg_duration", "4",
    "-use_template", "1",
    "-use_timeline", "1",
    "dash/stream.mpd"
])

DASH vs HLS: perbandingan protokol

Pilihan antara DASH dan HLS adalah salah satu keputusan utama saat merancang sistem streaming video. Kedua protokol memecahkan tugas yang sama (pengiriman video adaptif melalui HTTP), tetapi memiliki perbedaan mendasar dalam arsitektur, dukungan codec, dan ekosistem. Mari kita lihat berdasarkan parameter utama.

ParameterDASHHLS
StandarInternasional (ISO/IEC 23009-1)Proprietary (RFC 8216, Apple)
Deskripsi aliranXML (MPD)Playlist M3U8
CodecSemua (H.264, HEVC, AV1, VP9)Terbatas (H.264, HEVC, AV1 sejak 2023)
Format segmenfMP4 (utama), MPEG-2 TSMPEG-2 TS, fMP4
DRMCENC (seragam untuk semua DRM)FairPlay, Widevine (terpisah)
Dukungan iOSMelalui pemutar pihak ketigaNative (AVPlayer, Safari)
BrowserChrome, Firefox, Edge (melalui MSE)Safari (native), lainnya melalui MSE

Keunggulan utama DASH — independensi dari codec. Jika HLS awalnya membatasi codec pada yang didukung Apple (H.264, HEVC, dan baru-baru ini AV1), DASH dapat menggunakan codec apa pun yang didukung pemutar: VP9/VP8 (penting untuk YouTube dan Chrome), AV1 (untuk efisiensi), H.264/HEVC (untuk kompatibilitas). Ini menjadikan DASH pilihan utama untuk layanan lintas platform di mana aliran tunggal diperlukan untuk semua perangkat.

Kekurangan DASH di iOS — kurangnya dukungan native di Safari dan AVPlayer. Pengembang aplikasi iOS perlu menggunakan pemutar pihak ketiga yang kompatibel dengan HLS atau pustaka seperti libdash dengan integrasi melalui VTDecoder. Dalam praktiknya, ini berarti bahwa untuk proyek yang berfokus pada iOS, HLS tetap menjadi standar de facto, sementara untuk Android dan platform web, DASH adalah solusi yang lebih fleksibel dan kuat.

Penerapan DASH dalam pengembangan mobile

Integrasi DASH dalam aplikasi mobile tergantung pada platform. Di Android, DASH didukung langsung melalui ExoPlayer dengan modul ekstensi. Di iOS, diperlukan penggunaan pustaka pihak ketiga, seperti libdash dengan integrasi melalui AVFoundation atau MPEGDASHPlayer. Mari kita lihat implementasi praktis untuk kedua platform.

DASH di Android melalui ExoPlayer

ExoPlayer dari Google menyediakan dukungan bawaan untuk DASH melalui modul `exoplayer-dash`. Menghubungkan aliran DASH tidak berbeda dari format lainnya — cukup berikan URI file MPD ke MediaItem. ExoPlayer secara otomatis menentukan format konten dan memulai renderer yang sesuai, mendukung semua algoritma ABR standar.

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

val dashMediaItem = MediaItem
    .Builder()
    .setUri("https://example.com/dash/stream.mpd")
    .setMimeType("application/dash+xml")
    .build()

player.setMediaItem(dashMediaItem)
player.prepare()
player.playWhenReady = true

DASH dengan DRM di kedua platform

Common Encryption (CENC) — salah satu kemampuan utama DASH, memungkinkan penggunaan satu aliran media dengan sistem DRM yang berbeda. File MPD berisi elemen XML ContentProtection dengan pengidentifikasi sistem DRM (Widevine, PlayReady, FairPlay). Klien memilih sistem DRM yang sesuai berdasarkan platformnya dan meminta lisensi melalui server lisensi.

kotlin
val drmLicenseUri = Uri.parse("https://license.example.com/wv")
val drmSessionManager = DefaultDrmSessionManager
    .Builder()
    .setUuidAndExoMediaDrmProvider(
        C.WIDEVINE_UUID,
        FrameworkMediaDrm.DEFAULT_PROVIDER
    )
    .build(drmLicenseUri, null)

val mediaItem = MediaItem
    .Builder()
    .setUri("https://example.com/encrypted/stream.mpd")
    .setDrmConfiguration(
        MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID)
            .setLicenseUri("https://license.example.com/wv")
            .build()
    )
    .build()

Optimalisasi DASH untuk perangkat mobile

Aplikasi mobile memerlukan penyesuaian khusus DASH karena keterbatasan bandwidth dan konsumsi daya. Rekomendasi utama meliputi: pengaturan buffer minimum 2-3 segmen untuk ketahanan terhadap penurunan kecepatan jangka pendek, penggunaan segmen dengan durasi 2-4 detik untuk respons yang lebih cepat terhadap perubahan jaringan, dan pramuat segmen berikutnya saat beralih kualitas.

Untuk menghemat lalu lintas di jaringan seluler, Bitmovin (2024) merekomendasikan penggunaan Content Steering — mekanisme yang mirip dengan fungsi analog HLS, yang memungkinkan pengarahan klien secara dinamis ke node CDN yang optimal. DASH Content Steering dijelaskan dalam spesifikasi ISO/IEC 23009-1:2022 dan didukung di dash.js 4.5+ dan ExoPlayer 2.18+.

Pertanyaan yang Sering Diajukan

Apa perbedaan DASH dengan HLS?

DASH — standar MPEG internasional terbuka, tidak terikat pada vendor. Tidak seperti HLS (protokol proprietary Apple), DASH mendukung codec apa pun, menggunakan deskripsi aliran XML (MPD) sebagai pengganti M3U8, dan menyediakan sistem DRM terpadu melalui CENC. HLS memiliki dukungan native di iOS, DASH lebih fleksibel untuk solusi lintas platform.

Pemutar apa yang mendukung DASH di perangkat mobile?

Di Android, pemutar utama untuk DASH adalah ExoPlayer dari Google dengan modul exoplayer-dash. Di iOS, digunakan solusi pihak ketiga seperti libdash dengan integrasi melalui AVFoundation atau pemutar komersial (THEOplayer, Bitmovin). Di browser web, DASH diputar melalui dash.js menggunakan MediaSource Extensions.

Apa itu MPD dalam konteks DASH?

MPD (Media Presentation Description) — adalah file XML yang mendeskripsikan struktur aliran DASH: durasi konten, bitrate yang tersedia, resolusi, codec, format segmen, dan lokasinya. MPD berfungsi sebagai titik masuk untuk pemutar, menggantikan master playlist di HLS. Tanpa file MPD, pemutaran konten DASH tidak mungkin dilakukan.

Apakah DASH mendukung siaran langsung?

Ya, DASH mendukung VOD dan siaran langsung. Untuk siaran langsung, digunakan tipe MPD dynamic dengan pembaruan otomatis. Server secara berkala memperbarui MPD, menambahkan segmen baru dan menghapus yang sudah usang. Low-Latency DASH (LL-DASH) dengan chunked encoding memungkinkan mencapai latensi 3-8 detik, sebanding dengan LL-HLS.

Bagaimana cara kerja DRM di DASH?

DASH menggunakan Common Encryption (CENC, ISO/IEC 23001-7), yang memungkinkan enkripsi konten media sekali dan didekripsi oleh sistem DRM mana pun. MPD berisi elemen XML ContentProtection dengan indikasi DRM yang didukung (Widevine, PlayReady, FairPlay). Pemutar memilih DRM yang sesuai berdasarkan platform dan meminta lisensi melalui URL yang ditentukan.

Kesimpulan

  • MPEG-DASH — standar internasional terbuka untuk streaming HTTP adaptif dengan deskripsi aliran dalam format XML MPD.
  • Independensi codec — DASH mendukung H.264, HEVC, AV1, VP9, dan codec lain apa pun yang tersedia untuk pemutar.
  • CENC menyediakan enkripsi konten yang seragam untuk semua sistem DRM, menyederhanakan lisensi.
  • Algoritma ABR (BOLA, Pensieve) meminimalkan peralihan bitrate dan memastikan pemutaran yang stabil.
  • Android — DASH didukung secara native di ExoPlayer; iOS memerlukan pustaka pihak ketiga.
  • LL-DASH mengurangi latensi siaran langsung hingga 3-8 detik.
  • Direkomendasikan menggunakan DASH untuk proyek lintas platform di mana fleksibilitas codec dan DRM penting.

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