DASH — mi ez, a dinamikus streaming protokollja és működési elve

Szerző: IT Sectr Megjelenés: 2026-05-23 Olvasási idő: 9 perc

A Dynamic Adaptive Streaming over HTTP (DASH) egy nemzetközi szabvány az adaptív multimédiás adatfolyam-átvitelre, amelyet az MPEG (Moving Picture Experts Group) fejlesztett ki. A DASH a videó és audió HTTP-n keresztüli szállítását biztosítja, XML formátumú adatfolyam-leírást (Media Presentation Description, MPD) használva, és a tartalmat különböző bitsebességű szegmensekre bontva. A Bitmovin Video Developer Report (2025) tanulmánya szerint a videófejlesztők 58%-a használ DASH-t, ami a HLS után a második legnépszerűbb protokollá teszi.

Főbb pontok

  • DASH — egy nyílt nemzetközi MPEG szabvány az adaptív HTTP-n keresztüli adatfolyam-átvitelre.
  • MPD fájl (Media Presentation Description) az adatfolyamot egy XML struktúrán keresztül irányítja az időszakok és adaptációs készletek leírásával.
  • Kodekek nincsenek korlátozva a specifikáció által — a DASH támogatja a H.264, HEVC, AV1, VP9, AAC és más kodekeket.
  • DRM a Common Encryption (CENC) segítségével valósul meg, amely egyetlen adatfolyamban támogatja a Widevine, PlayReady és FairPlay rendszereket.
  • Platformfüggetlenség a DASH-t az ExoPlayer (Android), dash.js (böngészők) és libdash biztosítja.

Mi az a DASH?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) — egy ISO/IEC 23009-1 nemzetközi szabvány, amelyet 2012-ben tettek közzé válaszul az adaptív adatfolyam-továbbítás saját tulajdonú megoldásainak széttöredezésére. Ellentétben a HLS-sel (Apple saját protokollja) és a Smooth Streaminggel (Microsoft), a DASH-t kezdettől fogva nyílt, adott gyártóhoz nem kötött szabványként fejlesztették, ami biztosította széles iparági támogatását.

A DASH fő innovációja — az adatfolyam leírásának és a médiatartalomnak a szétválasztása. Az adatfolyam leírása az MPD (Media Presentation Description) XML fájlban tárolódik, amely tartalmazza az összes információt a rendelkezésre álló változatokról: bitsebességek, felbontások, kodekek, feliratok, hangsávok. A médiatartalom különálló szegmensekben (általában fMP4) tárolódik, amelyek egymástól függetlenül tölthetők le HTTP-n keresztül. Ez az architektúra lehetővé teszi, hogy a szerver infrastruktúra maximálisan egyszerű legyen — bármely HTTP szerver képes DASH tartalmat kiszolgálni.

A DASH adaptivitása ugyanazon tartalom változatainak multiplexálásával valósul meg. A szerver több Reprezentációt készít elő — a tartalom különböző tömörítési paraméterű másolatait. A kliens elemzi a csatorna sávszélességét és dinamikusan vált a reprezentációk között, kiválasztva a minőség és a lejátszás stabilitásának optimális arányát. Akadémiai kutatás (IEEE Access, 2024) szerint a DASH a BOLA algoritmussal 22%-kal kevesebb bitsebesség-váltást mutat a HLS-hez képest instabil kapcsolat esetén.

A DASH története és szabványosítása

MPEG 2010-ben kezdte meg a munkát a DASH-en a meglévő megoldások elemzése után: Apple HLS, Microsoft Smooth Streaming és Adobe HDS. A szabvány első verziója (ISO/IEC 23009-1:2012) 2012-ben jelent meg. A második verzió (2014) hozzáadta az események támogatását, a továbbfejlesztett reklámbeszúrást és a szerver által irányított adaptációt. A harmadik verzió (2019) — a HDR, 8K, tapintási videó támogatását és a továbbfejlesztett integrációt az MMT-vel (MPEG Media Transport) az 5G hálózatok számára.

2024-ben az MPEG bejelentette a DASH Next Generation változatát, amely magában foglalja a neurális hálózati kodekek támogatását, a felhőalapú renderelést és az Extended Reality (XR) forgatókönyvek optimalizálását. A kulcsinnováció — a Neural Network-Based Video Coding (NNVC), amely ML modelleket használ a kliens oldali dekódoláshoz, ami 30-50%-kal csökkentheti a bitsebességet a minőség megőrzése mellett.

Hogyan működik a DASH?

A DASH adatfolyam lejátszásának folyamata négy egymást követő szakaszból áll: az MPD megszerzése, az adatfolyam leírásának elemzése, a kezdeti reprezentáció kiválasztása és a reprezentációk közötti dinamikus váltás. Minden szakasznak megvan a maga sajátossága, amely befolyásolja a felhasználói élmény minőségét.

MPD beszerzése és elemzése

A lejátszó betölti az MPD fájlt egy ismert URL-ről. Az MPD egy XML struktúrát tartalmaz a teljes adatfolyam leírásával: a tartalom időtartama, időskála, rendelkezésre álló időszakok (Period), adaptációs készletek (AdaptationSet) és reprezentációk (Representation) konkrét kódolási paraméterekkel. A lejátszó elemzi az MPD-t és létrehozza a rendelkezésre álló média erőforrások belső modelljét.

Példa egy alap MPD fájlra két felbontású VOD tartalomhoz:

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>

Szegmensek betöltése és adaptáció

A kezdeti reprezentáció kiválasztása után a lejátszó elkezdi betölteni a szegmenseket. Minden szegmens néhány másodpercnyi tartalmat tartalmaz (általában 2-10 másodperc). A lejátszó pufferel néhány szegmenst előre, ami biztosítja a hálózati sebesség rövid távú csökkenéseivel szembeni ellenállást. A reprezentáció kiválasztási algoritmus (ABR) folyamatosan figyeli a szegmensek betöltési sebességét és dönt a rendelkezésre álló bitsebességek közötti váltásról.

A DASH modern ABR algoritmusai, mint a BOLA (Buffer Occupancy based Lyapunov Algorithm) és a Pensieve (Reinforcement Learning alapú), nemcsak a jelenlegi sávszélességet, hanem a puffer méretét, a tartalom típusát (sport, hírek, film) és még az eszköz energiafogyasztását is figyelembe veszik. A BOLA, amely a dash.js és az ExoPlayer része, minimalizálja a bitsebesség-váltások számát a stabil puffer fenntartása mellett, amit az ACM kutatások (Spiteri et al., 2020) is megerősítettek.

A DASH felépítése: MPD, Period, Adaptation Set

A DASH adatfolyam hierarchikus felépítése négy szinten szerveződik: MPD → Period → AdaptationSet → Representation. Minden szint hozzáad egy részletességi szintet, lehetővé téve összetett forgatókönyvek leírását — az egyszerű VOD-tól a reklámbeszúrásokkal és többkamerás videóval ellátott élő közvetítésekig.

MPD (Media Presentation Description)

MPD — a gyökérelem, amely a teljes média prezentációt írja le. Az MPD attribútumai meghatározzák az adatfolyam típusát (static VOD-hoz, dynamic élő közvetítéshez), a teljes időtartamot, az időskálát, a profilt és a DRM-re vonatkozó információkat. Az MPD egy vagy több Period-ot tartalmazhat, amelyek mindegyike a tartalom egy független időintervallumát képviseli.

Period, AdaptationSet és Representation

Period — a prezentáció időbeli szegmense. VOD esetén egy Period-ot használnak a teljes tartalomhoz. Reklámbeszúrásokkal ellátott élő közvetítés esetén a Period dinamikusan változhat — a lejátszó betölti a frissített MPD-t és észleli az új Period-ot, amely a reklámblokknak felel meg. Minden Period egy vagy több AdaptationSet-et tartalmaz.

AdaptationSet — azonos médiatípus (videó, audio, felirat) egymással felcserélhető reprezentációinak csoportja. Az AdaptationSet-en belül minden reprezentáció csak bitsebességben és/vagy felbontásban különbözik, de ugyanazt a tartalmat kódolja. Fontos tulajdonság: a lejátszó képes váltani a reprezentációk között ugyanazon AdaptationSet-en belül a szegmensek határán a lejátszás megszakítása nélkül.

Representation — egy konkrét kódolási változat meghatározott bitsebességgel, felbontással és kodekkel. Minden Reprezentációhoz az MPD-ben meg van adva egy URL sablon a szegmensek betöltéséhez. A DASH rugalmas szegmenscímzési rendszert használ — URL sablonokon keresztül a szegmensszám és idő behelyettesítésével ($Number$, $Time$), ami lehetővé teszi a szerver számára a fájlnevek dinamikus generálását anélkül, hogy minden szegmenst fel kellene sorolni az MPD-ben.

Szegmentálás és csomagolás

A DASH szegmensei két típusúak lehetnek: Segment típus (csak médiaadatokat tartalmaz) és Subsegment típus (egy szegmens része finomabb hozzáféréshez). A DASH tartalom kódolásához olyan eszközöket használnak, mint az FFmpeg vagy csomagkódolók. Példa DASH adatfolyam létrehozására egy bemeneti fájlból:

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: protokollok összehasonlítása

A DASH és HLS közötti választás az egyik kulcsfontosságú döntés a videó streamelő rendszer tervezésekor. Mindkét protokoll ugyanazt a feladatot oldja meg (adaptív HTTP videó szállítás), de alapvető különbségek vannak az architektúrában, a kodek támogatásban és az ökoszisztémában. Vizsgáljuk meg őket a fő paraméterek szerint.

ParaméterDASHHLS
SzabványNemzetközi (ISO/IEC 23009-1)Saját tulajdonú (RFC 8216, Apple)
Adatfolyam leírásaXML (MPD)M3U8 lejátszási lista
KodekekBármilyen (H.264, HEVC, AV1, VP9)Korlátozott (H.264, HEVC, AV1 2023-tól)
Szegmens formátumfMP4 (elsődleges), MPEG-2 TSMPEG-2 TS, fMP4
DRMCENC (egységes az összes DRM-hez)FairPlay, Widevine (külön)
iOS támogatásHarmadik féltől származó lejátszókon keresztülNatív (AVPlayer, Safari)
BöngészőkChrome, Firefox, Edge (MSE-n keresztül)Safari (natív), többi MSE-n keresztül

A DASH fő előnye — a kodekektől való függetlenség. Míg a HLS eredetileg a kodekeket az Apple által támogatottakra korlátozta (H.264, HEVC, és nemrég AV1), addig a DASH bármilyen, a lejátszó által támogatott kodeket használhat: VP9/VP8 (kritikus a YouTube és Chrome számára), AV1 (hatékonyságért), H.264/HEVC (kompatibilitásért). Ez teszi a DASH-t előnyös választássá a platformfüggetlen szolgáltatások számára, ahol egységes adatfolyamra van szükség minden eszközhöz.

A DASH hátránya iOS-en — a natív támogatás hiánya a Safariban és az AVPlayerben. Az iOS alkalmazások fejlesztőinek harmadik féltől származó HLS-kompatibilis lejátszókat vagy olyan könyvtárakat kell használniuk, mint a libdash VTDecoderen keresztüli integrációval. A gyakorlatban ez azt jelenti, hogy az iOS-központú projekteknél a HLS marad a de facto szabvány, míg az Android és web platformok esetében a DASH rugalmasabb és hatékonyabb megoldás.

A DASH alkalmazása mobilfejlesztésben

A DASH integrációja a mobilalkalmazásokban platformfüggő. Androidon a DASH közvetlenül támogatott az ExoPlayer bővítőmodulján keresztül. iOS-en harmadik féltől származó könyvtárak használata szükséges, mint a libdash AVFoundationon keresztüli integrációval vagy az MPEGDASHPlayer. Tekintsük át a gyakorlati megvalósítást mindkét platformra.

DASH Androidon ExoPlayer segítségével

A Google ExoPlayer beépített DASH támogatást nyújt az `exoplayer-dash` modulon keresztül. A DASH adatfolyam csatlakoztatása nem különbözik más formátumoktól — elég megadni az MPD fájl URI-ját a MediaItem-ben. Az ExoPlayer automatikusan meghatározza a tartalom formátumát és elindítja a megfelelő renderelőt, támogatva az összes szabványos ABR algoritmust.

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 DRM-mel mindkét platformon

Common Encryption (CENC) — a DASH egyik kulcsképessége, amely lehetővé teszi egyetlen média adatfolyam használatát különböző DRM rendszerekkel. Az MPD fájl ContentProtection XML elemeket tartalmaz a DRM rendszerek azonosítóival (Widevine, PlayReady, FairPlay). A kliens a platformja alapján kiválasztja a megfelelő DRM rendszert, és licencet kér a licencszerveren keresztül.

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

DASH optimalizálása mobil eszközökhöz

A mobilalkalmazások a sávszélesség és energiafogyasztás korlátai miatt a DASH speciális beállítását igénylik. A fő ajánlások a következők: minimum 2-3 szegmensből álló puffer beállítása a rövid távú sebességcsökkenésekkel szembeni ellenálláshoz, 2-4 másodperces szegmensek használata a hálózati változásokra való gyorsabb reagáláshoz, és a következő szegmens előzetes betöltése minőségváltáskor.

A mobil hálózatokban való adatforgalom megtakarítása érdekében a Bitmovin (2024) a Content Steering használatát javasolja — egy olyan mechanizmust, amely hasonló a HLS analóg funkciójához, lehetővé téve a kliens dinamikus irányítását az optimális CDN csomóponthoz. A DASH Content Steering az ISO/IEC 23009-1:2022 specifikációban van leírva, és a dash.js 4.5+ és ExoPlayer 2.18+ támogatja.

Gyakran ismételt kérdések

Miben különbözik a DASH a HLS-től?

DASH — nyílt nemzetközi MPEG szabvány, nem kötődik gyártóhoz. Ellentétben a HLS-sel (Apple saját protokollja), a DASH bármilyen kodeket támogat, XML adatfolyam leírást (MPD) használ M3U8 helyett, és egységes DRM rendszert biztosít a CENC-en keresztül. A HLS natív támogatással rendelkezik iOS-en, a DASH rugalmasabb a platformfüggetlen megoldásokhoz.

Mely lejátszók támogatják a DASH-t mobil eszközökön?

Androidon a DASH fő lejátszója a Google ExoPlayere az exoplayer-dash modullal. iOS-en harmadik féltől származó megoldásokat használnak, mint a libdash AVFoundationon keresztüli integrációval vagy kereskedelmi lejátszók (THEOplayer, Bitmovin). Webböngészőkben a DASH a dash.js segítségével játszható le MediaSource Extensions használatával.

Mi az MPD a DASH kontextusában?

MPD (Media Presentation Description) — egy XML fájl, amely leírja a DASH adatfolyam szerkezetét: a tartalom időtartamát, a rendelkezésre álló bitsebességeket, felbontásokat, kodekeket, szegmensformátumokat és azok elhelyezkedését. Az MPD belépési pontként szolgál a lejátszó számára, helyettesítve a HLS fő lejátszási listáját. MPD fájl nélkül a DASH tartalom lejátszása lehetetlen.

Támogatja a DASH az élő közvetítéseket?

Igen, a DASH támogatja a VOD és az élő közvetítéseket is. Az élő közvetítésekhez a dynamic típusú MPD-t használják automatikus frissítéssel. A szerver időszakosan frissíti az MPD-t, új szegmenseket adva hozzá és eltávolítva a régieket. A Low-Latency DASH (LL-DASH) chunked encoding segítségével 3-8 másodperces késleltetést tesz lehetővé, ami összehasonlítható az LL-HLS-sel.

Hogyan működik a DRM a DASH-ben?

DASH a Common Encryption (CENC, ISO/IEC 23001-7) rendszert használja, amely lehetővé teszi a médiatartalom egyszeri titkosítását és bármely DRM rendszer általi visszafejtését. Az MPD ContentProtection XML elemeket tartalmaz a támogatott DRM-ek (Widevine, PlayReady, FairPlay) megjelölésével. A lejátszó a platform alapján kiválasztja a megfelelő DRM-et, és licencet kér a megadott URL-en keresztül.

Összefoglalás

  • MPEG-DASH — nyílt nemzetközi szabvány az adaptív HTTP adatfolyam-átvitelhez XML adatfolyam leírással MPD formátumban.
  • Kodek-függetlenség — a DASH támogatja a H.264, HEVC, AV1, VP9 és bármilyen más, a lejátszó számára elérhető kodeket.
  • CENC egységes tartalomtitkosítást biztosít az összes DRM rendszer számára, egyszerűsítve a licencelést.
  • ABR algoritmusok (BOLA, Pensieve) minimalizálják a bitsebesség-váltásokat és stabil lejátszást biztosítanak.
  • Android — a DASH natívan támogatott az ExoPlayerben; iOS harmadik féltől származó könyvtárakat igényel.
  • LL-DASH 3-8 másodpercre csökkenti az élő közvetítés késleltetését.
  • Ajánlott a DASH használata platformfüggetlen projektekhez, ahol fontos a kodek és DRM rugalmasság.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is