DASH — ano ito, protocol at prinsipyo ng paggana ng dynamic streaming

May-akda: IT Sectr Nai-publish: 2026-05-23 Oras ng pagbabasa: 9 min

Ang Dynamic Adaptive Streaming over HTTP (DASH) ay isang internasyonal na pamantayan para sa adaptive multimedia streaming transmission na binuo ng MPEG (Moving Picture Experts Group). Ang DASH ay nagbibigay ng paghahatid ng video at audio sa pamamagitan ng HTTP, gamit ang isang XML stream description sa Media Presentation Description (MPD) na format at hinahati ang content sa mga segment ng iba't ibang bitrate. Ayon sa Bitmovin Video Developer Report (2025) na pag-aaral, 58% ng mga developer ng video ay gumagamit ng DASH, na ginagawa itong pangalawang pinakasikat na protocol pagkatapos ng HLS.

Mga Pangunahing Punto

  • DASH — ay isang bukas na internasyonal na pamantayan ng MPEG para sa adaptive streaming sa pamamagitan ng HTTP.
  • MPD file (Media Presentation Description) ay namamahala sa stream sa pamamagitan ng XML structure na may paglalarawan ng mga panahon at adaptation set.
  • Mga Codec ay hindi limitado ng spec — sinusuportahan ng DASH ang H.264, HEVC, AV1, VP9, AAC, at iba pa.
  • DRM ay ipinapatupad sa pamamagitan ng Common Encryption (CENC), na sumusuporta sa Widevine, PlayReady, at FairPlay sa isang stream.
  • Cross-platform DASH ay ibinibigay sa pamamagitan ng ExoPlayer (Android), dash.js (mga browser), at libdash.

Ano ang DASH?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) — ay isang internasyonal na pamantayan ISO/IEC 23009-1, na inilathala noong 2012 bilang tugon sa pagkakawatak-watak ng mga proprietary na solusyon sa adaptive streaming. Hindi tulad ng HLS (proprietary protocol ng Apple) at Smooth Streaming (Microsoft), ang DASH ay binuo mula sa simula bilang isang bukas, hindi nakatali sa anumang partikular na vendor na pamantayan, na tiniyak ang malawak na suporta nito sa industriya.

Ang pangunahing inobasyon ng DASH — paghihiwalay ng paglalarawan ng stream at media content. Ang paglalarawan ng stream ay naka-imbak sa XML file na MPD (Media Presentation Description), na naglalaman ng lahat ng impormasyon tungkol sa mga available na variant: bitrate, resolution, codec, subtitle, audio track. Ang media content ay naka-imbak bilang magkakahiwalay na segment (karaniwan ay fMP4), na maaaring i-download nang nakapag-iisa sa pamamagitan ng HTTP. Ang ganitong arkitektura ay nagpapahintulot sa server infrastructure na maging maximum na simple — anumang HTTP server ay kayang mag-distribute ng DASH content.

Ang adaptivity ng DASH ay ipinapatupad sa pamamagitan ng multiplexing ng mga variant ng parehong content. Ang server ay naghahanda ng maraming Representasyon — mga kopya ng content na may iba't ibang compression parameter. Sinusuri ng client ang bandwidth ng channel at dynamic na lumilipat sa pagitan ng mga representasyon, pinipili ang optimal na ratio ng kalidad at stability ng playback. Ayon sa akademikong pananaliksik (IEEE Access, 2024), ang DASH na may BOLA algorithm ay nagpapakita ng 22% na mas kaunting bitrate switching kumpara sa HLS sa hindi matatag na koneksyon.

Kasaysayan at standardisasyon ng DASH

MPEG ay nagsimula ng trabaho sa DASH noong 2010 pagkatapos suriin ang mga umiiral na solusyon: Apple HLS, Microsoft Smooth Streaming, at Adobe HDS. Ang unang bersyon ng pamantayan (ISO/IEC 23009-1:2012) ay lumabas noong 2012. Ang ikalawang bersyon (2014) ay nagdagdag ng suporta para sa mga event, pinahusay na pagpasok ng advertisement, at Server-Controlled Adaptation. Ang ikatlong bersyon (2019) — suporta para sa HDR, 8K, tactile video, at pinahusay na integrasyon sa MMT (MPEG Media Transport) para sa 5G network.

Noong 2024, inanunsyo ng MPEG ang DASH Next Generation, na kinabibilangan ng suporta para sa neural network codec, cloud rendering, at optimization para sa Extended Reality (XR) na mga senaryo. Ang pangunahing inobasyon — Neural Network-Based Video Coding (NNVC), na gumagamit ng ML models para sa decoding sa client side, na maaaring magbawas ng bitrate ng 30-50% habang pinapanatili ang kalidad.

Paano gumagana ang DASH?

Ang proseso ng playback ng DASH stream ay binubuo ng apat na sunud-sunod na yugto: pagkuha ng MPD, pag-parse ng stream description, pagpili ng initial na representasyon, at dynamic na paglipat sa pagitan ng mga representasyon. Ang bawat yugto ay may kanya-kanyang specifiko na nakakaapekto sa kalidad ng karanasan ng user.

Pagkuha at pag-parse ng MPD

Niloload ng player ang MPD file mula sa isang kilalang URL. Ang MPD ay naglalaman ng XML structure na may paglalarawan ng buong stream: tagal ng content, time scale, mga available na panahon (Period), adaptation set (AdaptationSet), at representasyon (Representation) na may tiyak na encoding parameters. Ina-parse ng player ang MPD at lumikha ng internal na modelo ng mga available na media resources.

Halimbawa ng isang basic na MPD file para sa VOD content na may dalawang resolution:

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>

Pag-load ng mga segment at adaptation

Pagkatapos pumili ng initial na representasyon, ang player ay nagsisimulang mag-load ng mga segment. Ang bawat segment ay naglalaman ng ilang segundo ng content (karaniwan ay 2-10 segundo). Ang player ay nagpapanatili ng buffer para sa ilang segment na nauuna, na tinitiyak ang resilience sa panandaliang pagbaba ng bilis ng network. Ang algorithm ng pagpili ng representasyon (ABR) ay patuloy na sinusubaybayan ang bilis ng pag-load ng mga segment at gumagawa ng desisyon tungkol sa paglipat sa pagitan ng mga available na bitrate.

Ang mga modernong ABR algorithm para sa DASH, tulad ng BOLA (Buffer Occupancy based Lyapunov Algorithm) at Pensieve (batay sa Reinforcement Learning), ay isinasaalang-alang hindi lamang ang kasalukuyang bandwidth, kundi pati na rin ang laki ng buffer, uri ng content (sports, balita, pelikula), at maging ang energy consumption ng device. Ang BOLA, na bahagi ng dash.js at ExoPlayer, ay nagmi-minimize ng bilang ng bitrate switching habang pinapanatili ang stable buffer, na kinumpirma ng ACM research (Spiteri et al., 2020).

Istraktura ng DASH: MPD, Period, Adaptation Set

Ang hierarchical structure ng DASH stream ay naka-organisa sa apat na level: MPD → Period → AdaptationSet → Representation. Ang bawat level ay nagdaragdag ng antas ng detalye, na nagpapahintulot sa paglalarawan ng mga kumplikadong senaryo — mula sa simpleng VOD hanggang sa live broadcast na may advertisement insertions at multi-angle video.

MPD (Media Presentation Description)

MPD — ang root element, na naglalarawan ng buong media presentation. Ang mga attribute ng MPD ay tumutukoy sa uri ng stream (static para sa VOD, dynamic para sa live), kabuuang tagal, time scale, profile, at impormasyon tungkol sa DRM. Ang MPD ay maaaring maglaman ng isa o maramihang Period, bawat isa ay kumakatawan sa isang independiyenteng time interval ng content.

Period, AdaptationSet, at Representation

Period — ang time segment ng presentation. Para sa VOD, isang Period ang ginagamit para sa buong content. Para sa live na may advertisement insertions, ang Period ay maaaring magbago nang dynamic — niloload ng player ang updated na MPD at nakakakita ng bagong Period na tumutugma sa advertisement block. Ang bawat Period ay naglalaman ng isa o maramihang AdaptationSet.

AdaptationSet — isang grupo ng mga interchangeable na representasyon ng parehong uri ng media: video, audio, subtitle. Sa loob ng AdaptationSet, lahat ng representasyon ay nagkakaiba lamang sa bitrate at/o resolution, nguni't n-eencode ng parehong content. Mahalagang property: ang player ay maaaring lumipat sa pagitan ng mga representasyon sa loob ng parehong AdaptationSet sa hangganan ng mga segment nang walang pagkaantala ng playback.

Representation — isang tiyak na variant ng encoding na may tiyak na bitrate, resolution, at codec. Para sa bawat Representasyon sa MPD, tinutukoy ang isang URL template para sa pag-load ng mga segment. Gumagamit ang DASH ng isang flexible na sistema ng pag-address ng segment — sa pamamagitan ng URL templates na may pagpapalit ng segment number at oras ($Number$, $Time$), na nagpapahintulot sa server na dynamic na bumuo ng mga filename nang hindi kailangang banggitin ang bawat segment sa MPD.

Segmentasyon at packaging

Ang mga segment ng DASH ay maaaring dalawang uri: uri ng Segment (naglalaman lamang ng media data) at uri ng Subsegment (bahagi ng segment para sa mas granular na access). Para sa encoding ng DASH content, ginagamit ang mga tool tulad ng FFmpeg o packet encoder. Halimbawa ng paggawa ng DASH stream mula sa isang input file:

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: paghahambing ng mga protocol

Ang pagpili sa pagitan ng DASH at HLS ay isa sa mga pangunahing desisyon sa pagdidisenyo ng video streaming system. Ang parehong protocol ay lumulutas ng parehong gawain (adaptive HTTP video delivery), nguni't may pangunahing pagkakaiba sa arkitektura, suporta ng codec, at ecosystem. Tingnan natin ang mga ito ayon sa pangunahing parameter.

ParameterDASHHLS
PamantayanInternasyonal (ISO/IEC 23009-1)Proprietary (RFC 8216, Apple)
Stream descriptionXML (MPD)M3U8 playlist
Mga CodecKahit ano (H.264, HEVC, AV1, VP9)Limitado (H.264, HEVC, AV1 mula 2023)
Format ng segmentfMP4 (pangunahin), MPEG-2 TSMPEG-2 TS, fMP4
DRMCENC (uniform para sa lahat ng DRM)FairPlay, Widevine (magkahiwalay)
iOS supportSa pamamagitan ng third-party playerNative (AVPlayer, Safari)
Mga BrowserChrome, Firefox, Edge (sa pamamagitan ng MSE)Safari (native), iba pa sa pamamagitan ng MSE

Pangunahing bentahe ng DASH — kalayaan mula sa mga codec. Kung ang HLS ay orihinal na naglimita ng mga codec sa mga sinusuportahan ng Apple (H.264, HEVC, at kamakailan AV1), ang DASH ay maaaring gumamit ng anumang codec na sinusuportahan ng player: VP9/VP8 (kritikal para sa YouTube at Chrome), AV1 (para sa efficiency), H.264/HEVC (para sa compatibility). Ginagawa nitong mas pinipiling pagpipilian ang DASH para sa cross-platform na serbisyo kung saan kinakailangan ang isang stream para sa lahat ng device.

Disadvantage ng DASH sa iOS — kakulangan ng native na suporta sa Safari at AVPlayer. Ang mga developer ng iOS application ay kailangang gumamit ng third-party na HLS-compatible player o library tulad ng libdash na may integrasyon sa pamamagitan ng VTDecoder. Sa praktika, nangangahulugan ito na para sa iOS-first projects, HLS ay nananatiling de facto standard, samantalang para sa Android at web platforms, DASH ay isang mas flexible at makapangyarihang solusyon.

Paggamit ng DASH sa mobile development

Integrasyon ng DASH sa mobile application ay nakadepende sa platform. Sa Android, ang DASH ay direktang sinusuportahan sa pamamagitan ng ExoPlayer na may extension module. Sa iOS, kinakailangan ang paggamit ng third-party library, tulad ng libdash na may integrasyon sa pamamagitan ng AVFoundation o MPEGDASHPlayer. Tingnan natin ang praktikal na implementasyon para sa parehong platform.

DASH sa Android sa pamamagitan ng ExoPlayer

ExoPlayer mula sa Google ay nagbibigay ng built-in na suporta para sa DASH sa pamamagitan ng module na `exoplayer-dash`. Ang pagkonekta ng DASH stream ay hindi naiiba sa ibang format — sapat na ipasa ang URI ng MPD file sa MediaItem. Awtomatikong tinutukoy ng ExoPlayer ang format ng content at inilulunsad ang kaukulang renderer, na sumusuporta sa lahat ng standard ABR algorithm.

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 na may DRM sa parehong platform

Common Encryption (CENC) — isa sa mga pangunahing kakayahan ng DASH, na nagpapahintulot sa paggamit ng isang media stream na may iba't ibang DRM system. Ang MPD file ay naglalaman ng XML elements na ContentProtection na may mga identifier ng DRM system (Widevine, PlayReady, FairPlay). Pinipili ng client ang angkop na DRM system batay sa platform nito at humihiling ng lisensya sa pamamagitan ng license server.

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()

Optimization ng DASH para sa mobile device

Ang mobile application ay nangangailangan ng espesyal na pag-aayos ng DASH dahil sa mga limitasyon ng bandwidth at energy consumption. Ang mga pangunahing rekomendasyon ay kinabibilangan ng: pag-set ng minimum na buffer ng 2-3 segment para sa resilience sa panandaliang pagbaba ng bilis, paggamit ng segment na may tagal na 2-4 segundo para sa mas mabilis na reaksyon sa mga pagbabago ng network, at pre-loading ng susunod na segment sa paglipat ng kalidad.

Para sa pagtitipid ng trapiko sa mobile network, ang Bitmovin (2024) ay nagrerekomenda ng paggamit ng Content Steering — isang mekanismo na katulad ng analogous function ng HLS, na nagpapahintulot ng dynamic na pagdirekta ng client sa optimal na CDN node. Ang DASH Content Steering ay inilalarawan sa specification ISO/IEC 23009-1:2022 at sinusuportahan sa dash.js 4.5+ at ExoPlayer 2.18+.

Mga Madalas Itanong

Paano naiiba ang DASH sa HLS?

DASH — isang bukas na internasyonal na pamantayan ng MPEG, hindi nakatali sa vendor. Hindi tulad ng HLS (proprietary protocol ng Apple), sinusuportahan ng DASH ang anumang codec, gumagamit ng XML stream description (MPD) sa halip na M3U8, at nagbibigay ng uniform na DRM system sa pamamagitan ng CENC. Ang HLS ay may native na suporta sa iOS, ang DASH ay mas flexible para sa cross-platform na solusyon.

Anong mga player ang sumusuporta sa DASH sa mobile device?

Sa Android, ang pangunahing player para sa DASH ay ExoPlayer mula sa Google na may module na exoplayer-dash. Sa iOS, ginagamit ang mga third-party na solusyon tulad ng libdash na may integrasyon sa pamamagitan ng AVFoundation o commercial player (THEOplayer, Bitmovin). Sa web browser, ang DASH ay pina-play sa pamamagitan ng dash.js gamit ang MediaSource Extensions.

Ano ang MPD sa konteksto ng DASH?

MPD (Media Presentation Description) — ay isang XML file na naglalarawan ng istraktura ng DASH stream: tagal ng content, mga available na bitrate, resolution, codec, format ng segment, at kanilang lokasyon. Ang MPD ay nagsisilbing entry point para sa player, na pinapalitan ang master playlist sa HLS. Kung walang MPD file, imposible ang playback ng DASH content.

Sinusuportahan ba ng DASH ang live broadcast?

Oo, sinusuportahan ng DASH ang parehong VOD at live broadcast. Para sa live broadcast, ginagamit ang dynamic na uri ng MPD na may automatic update. Pana-panahong ina-update ng server ang MPD, nagdaragdag ng mga bagong segment at nag-aalis ng mga luma. Ang Low-Latency DASH (LL-DASH) na may chunked encoding ay nagpapahintulot na makamit ang latency na 3-8 segundo, na maihahambing sa LL-HLS.

Paano gumagana ang DRM sa DASH?

DASH ay gumagamit ng Common Encryption (CENC, ISO/IEC 23001-7), na nagpapahintulot na i-encrypt ang media content nang isang beses at i-decrypt ito ng anumang DRM system. Ang MPD ay naglalaman ng XML elements na ContentProtection na may indikasyon ng mga supported DRM (Widevine, PlayReady, FairPlay). Pinipili ng player ang angkop na DRM batay sa platform at humihiling ng lisensya sa pamamagitan ng tinukoy na URL.

Buod

  • MPEG-DASH — bukas na internasyonal na pamantayan para sa adaptive HTTP streaming na may XML stream description sa MPD format.
  • Codec independence — sinusuportahan ng DASH ang H.264, HEVC, AV1, VP9, at anumang iba pang codec na available sa player.
  • CENC ay nagbibigay ng uniform content encryption para sa lahat ng DRM system, pinapasimple ang licensing.
  • ABR algorithm (BOLA, Pensieve) ay nagmi-minimize ng bitrate switching at tinitiyak ang stable playback.
  • Android — DASH ay native na sinusuportahan sa ExoPlayer; iOS ay nangangailangan ng third-party library.
  • LL-DASH ay nagbabawas ng latency ng live broadcast hanggang 3-8 segundo.
  • Inirerekomenda gamitin ang DASH para sa cross-platform projects kung saan mahalaga ang flexibility ng codec at DRM.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din