DASH — was es ist, Protokoll und Funktionsprinzip des dynamischen Streamings

Autor: IT Sectr Veröffentlicht: 2026-05-23 Lesezeit: 9 Min.

Dynamic Adaptive Streaming over HTTP (DASH) ist ein internationaler Standard für adaptives Multimedia-Streaming, entwickelt von MPEG (Moving Picture Experts Group). DASH liefert Video und Audio über HTTP unter Verwendung einer XML-Beschreibung des Streams im Format Media Presentation Description (MPD) und teilt den Inhalt in Segmente mit unterschiedlichen Bitraten. Laut dem Bitmovin Video Developer Report (2025) verwenden 58% der Videoentwickler DASH, was es zum zweitbeliebtesten Protokoll nach HLS macht.

Wichtigste Erkenntnisse

  • DASH ist ein offener internationaler MPEG-Standard für adaptives Streaming über HTTP.
  • MPD-Datei (Media Presentation Description) verwaltet den Stream über eine XML-Struktur mit Beschreibung von Perioden und Adaptionssätzen.
  • Codecs sind nicht durch die Spezifikation eingeschränkt — DASH unterstützt H.264, HEVC, AV1, VP9, AAC und andere.
  • DRM wird über Common Encryption (CENC) implementiert, das Widevine, PlayReady und FairPlay in einem einzigen Stream unterstützt.
  • Plattformübergreifend wird DASH über ExoPlayer (Android), dash.js (Browser) und libdash ermöglicht.

Was ist DASH?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) ist ein internationaler Standard ISO/IEC 23009-1, der 2012 als Reaktion auf die Fragmentierung proprietärer adaptiver Streaming-Lösungen veröffentlicht wurde. Im Gegensatz zu HLS (Apples proprietäres Protokoll) und Smooth Streaming (Microsoft) wurde DASH von Anfang an als offener, anbieterunabhängiger Standard entwickelt, was seine breite Unterstützung in der Industrie sicherstellte.

Die Hauptinnovation von DASH ist die Trennung von Stream-Beschreibung und Medieninhalt. Die Stream-Beschreibung wird in einer XML-Datei namens MPD (Media Presentation Description) gespeichert, die alle Informationen über verfügbare Optionen enthält: Bitraten, Auflösungen, Codecs, Untertitel, Audiospuren. Medieninhalte werden in separaten Segmenten (normalerweise fMP4) gespeichert, die unabhängig über HTTP geladen werden können. Diese Architektur ermöglicht eine möglichst einfache Serverinfrastruktur — jeder HTTP-Server kann DASH-Inhalte ausliefern.

Die Adaptivität in DASH wird durch Multiplexing von Inhaltsvarianten implementiert. Der Server bereitet mehrere Representations vor — Kopien des Inhalts mit unterschiedlichen Komprimierungsparametern. Der Client analysiert die Kanalbandbreite und wechselt dynamisch zwischen den Repräsentationen, um das optimale Gleichgewicht zwischen Qualität und Wiedergabestabilität zu wählen. Laut einer akademischen Studie (IEEE Access, 2024) zeigt DASH mit dem BOLA-Algorithmus 22% weniger Bitratenwechsel im Vergleich zu HLS bei instabilen Verbindungen.

Geschichte und Standardisierung von DASH

MPEG begann 2010 mit der Arbeit an DASH, nachdem bestehende Lösungen analysiert wurden: Apple HLS, Microsoft Smooth Streaming und Adobe HDS. Die erste Version des Standards (ISO/IEC 23009-1:2012) wurde 2012 veröffentlicht. Die zweite Version (2014) fügte Unterstützung für Ereignisse, verbesserte Werbeeinblendung und servergesteuerte Adaption hinzu. Die dritte Version (2019) fügte Unterstützung für HDR, 8K, haptisches Video und eine verbesserte Integration mit MMT (MPEG Media Transport) für 5G-Netze hinzu.

Im Jahr 2024 kündigte MPEG DASH Next Generation an, das Unterstützung für neuronale Netzwerk-Codecs, Cloud-Rendering und Optimierung für Extended Reality (XR)-Szenarien umfasst. Eine wichtige Neuerung ist die neuronale netzwerkbasierte Videocodierung (NNVC), die ML-Modelle für die clientseitige Dekodierung verwendet und die Bitrate bei gleichbleibender Qualität potenziell um 30-50% reduzieren kann.

Wie funktioniert DASH?

Der DASH-Stream-Wiedergabeprozess besteht aus vier aufeinanderfolgenden Phasen: Abrufen des MPD, Parsen der Stream-Beschreibung, Auswahl der anfänglichen Repräsentation und dynamisches Umschalten zwischen Repräsentationen. Jede Phase hat ihre eigenen Besonderheiten, die die Qualität der Benutzererfahrung beeinflussen.

Abrufen und Parsen des MPD

Der Player lädt die MPD-Datei von einer bekannten URL. Die MPD enthält eine XML-Struktur, die den gesamten Stream beschreibt: Inhaltsdauer, Zeitachse, verfügbare Perioden (Period), Adaptionssätze (AdaptationSet) und Repräsentationen (Representation) mit spezifischen Codierungsparametern. Der Player parst die MPD und erstellt ein internes Modell der verfügbaren Medienressourcen.

Beispiel einer einfachen MPD-Datei für VOD-Inhalte mit zwei Auflösungen:

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>

Segmentladung und Adaption

Nach Auswahl der anfänglichen Repräsentation beginnt der Player mit dem Laden von Segmenten. Jedes Segment enthält mehrere Sekunden Inhalt (normalerweise 2-10 Sekunden). Der Player hält einen Puffer von mehreren Segmenten vor, was Widerstandsfähigkeit gegen kurzzeitige Netzwerkgeschwindigkeitseinbrüche gewährleistet. Der ABR-Algorithmus (Adaptive Bitrate) überwacht ständig die Segment-Download-Geschwindigkeit und entscheidet über das Umschalten zwischen verfügbaren Bitraten.

Moderne ABR-Algorithmen für DASH, wie BOLA (Buffer Occupancy based Lyapunov Algorithm) und Pensieve (basiert auf Reinforcement Learning), berücksichtigen nicht nur die aktuelle Bandbreite, sondern auch die Puffergröße, den Inhaltstyp (Sport, Nachrichten, Filme) und sogar den Stromverbrauch des Geräts. BOLA, das Teil von dash.js und ExoPlayer ist, minimiert die Anzahl der Bitratenwechsel bei gleichzeitiger Aufrechterhaltung eines stabilen Puffers, wie durch ACM-Forschung (Spiteri et al., 2020) bestätigt wurde.

DASH-Struktur: MPD, Period, Adaptation Set

Die hierarchische Struktur eines DASH-Streams ist in vier Ebenen organisiert: MPD → Period → AdaptationSet → Representation. Jede Ebene fügt eine Detailstufe hinzu, die die Beschreibung komplexer Szenarien ermöglicht — von einfachem VOD bis zu Live-Übertragungen mit Werbeeinblendungen und Multi-Winkel-Video.

MPD (Media Presentation Description)

MPD ist das Wurzelelement, das die gesamte Medienpräsentation beschreibt. MPD-Attribute definieren den Stream-Typ (static für VOD, dynamic für Live), die Gesamtdauer, die Zeitachse, das Profil und DRM-Informationen. Die MPD kann eine oder mehrere Perioden enthalten, die jeweils ein unabhängiges Zeitsegment des Inhalts darstellen.

Period, AdaptationSet und Representation

Period ist ein Zeitsegment der Präsentation. Für VOD wird eine einzelne Period für den gesamten Inhalt verwendet. Für Live mit Werbeunterbrechungen kann die Period dynamisch wechseln — der Player lädt die aktualisierte MPD und erkennt eine neue Period, die dem Werbeblock entspricht. Jede Period enthält einen oder mehrere AdaptationSets.

AdaptationSet ist eine Gruppe austauschbarer Repräsentationen eines Medientyps: Video, Audio, Untertitel. Innerhalb eines AdaptationSets unterscheiden sich alle Repräsentationen nur in Bitrate und/oder Auflösung, codieren aber denselben Inhalt. Eine wichtige Eigenschaft: Der Player kann zwischen Repräsentationen innerhalb desselben AdaptationSets an Segmentgrenzen ohne Wiedergabeunterbrechung umschalten.

Representation ist eine spezifische Codierungsvariante mit einer definierten Bitrate, Auflösung und Codec. Für jede Representation gibt die MPD eine URL-Vorlage zum Laden von Segmenten an. DASH verwendet ein flexibles Segmentadressierungssystem — über URL-Vorlagen mit Segmentnummer- und Zeitersetzung ($Number$, $Time$), die es dem Server ermöglichen, Dateinamen dynamisch zu generieren, ohne jedes Segment in der MPD aufzulisten.

Segmentierung und Verpackung

Segmente in DASH können von zwei Typen sein: Segment-Typ (enthält nur Mediendaten) und Subsegment-Typ (Teil eines Segments für feineren Zugriff). Zum Codieren von DASH-Inhalten werden Werkzeuge wie FFmpeg oder Batch-Encoder verwendet. Beispiel für die Erstellung eines DASH-Streams aus einer Eingabedatei:

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: Protokollvergleich

Die Wahl zwischen DASH und HLS ist eine der Schlüsselentscheidungen beim Entwurf eines Video-Streaming-Systems. Beide Protokolle lösen dasselbe Problem (adaptive HTTP-Videoauslieferung), haben aber grundlegende Unterschiede in Architektur, Codec-Unterstützung und Ökosystem. Betrachten wir sie anhand der wichtigsten Parameter.

ParameterDASHHLS
StandardInternational (ISO/IEC 23009-1)Proprietär (RFC 8216, Apple)
Stream-BeschreibungXML (MPD)M3U8-Playlist
CodecsBeliebig (H.264, HEVC, AV1, VP9)Eingeschränkt (H.264, HEVC, AV1 seit 2023)
SegmentformatfMP4 (primär), MPEG-2 TSMPEG-2 TS, fMP4
DRMCENC (einheitlich für alle DRMs)FairPlay, Widevine (getrennt)
iOS-UnterstützungÜber Drittanbieter-PlayerNativ (AVPlayer, Safari)
BrowserChrome, Firefox, Edge (über MSE)Safari (nativ), andere über MSE

Hauptvorteil von DASH — Codec-Unabhängigkeit. Während HLS die Codecs ursprünglich auf die von Apple unterstützten (H.264, HEVC und seit kurzem AV1) beschränkte, kann DASH jeden vom Player unterstützten Codec verwenden: VP9/VP8 (entscheidend für YouTube und Chrome), AV1 (für Effizienz), H.264/HEVC (für Kompatibilität). Dies macht DASH zur bevorzugten Wahl für plattformübergreifende Dienste, die einen einheitlichen Stream für alle Geräte benötigen.

Nachteil von DASH auf iOS — fehlende native Unterstützung in Safari und AVPlayer. iOS-Entwickler müssen Drittanbieter-HLS-kompatible Player oder Bibliotheken wie libdash mit Integration über VTDecoder verwenden. In der Praxis bedeutet dies, dass HLS für iOS-first-Projekte der De-facto-Standard bleibt, während DASH für Android und Web-Plattformen eine flexiblere und leistungsfähigere Lösung darstellt.

Einsatz von DASH in der mobilen Entwicklung

Die Integration von DASH in mobile Anwendungen hängt von der Plattform ab. Auf Android wird DASH direkt über ExoPlayer mit dem Erweiterungsmodul unterstützt. Auf iOS sind Drittanbieter-Bibliotheken wie libdash mit Integration über AVFoundation oder MPEGDASHPlayer erforderlich. Sehen wir uns die praktische Implementierung für beide Plattformen an.

DASH auf Android über ExoPlayer

ExoPlayer von Google bietet integrierte DASH-Unterstützung über das Modul `exoplayer-dash`. Das Verbinden eines DASH-Streams unterscheidet sich nicht von anderen Formaten — übergeben Sie einfach die URI der MPD-Datei in einem MediaItem. ExoPlayer erkennt automatisch das Inhaltsformat und startet den entsprechenden Renderer, wobei alle standardmäßigen ABR-Algorithmen unterstützt werden.

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 mit DRM auf beiden Plattformen

Common Encryption (CENC) ist eine der Schlüsselfunktionen von DASH, die die Verwendung eines einzelnen Medienstreams mit verschiedenen DRM-Systemen ermöglicht. Die MPD-Datei enthält ContentProtection-XML-Elemente mit DRM-Systemkennungen (Widevine, PlayReady, FairPlay). Der Client wählt das geeignete DRM-System basierend auf seiner Plattform aus und fordert eine Lizenz vom Lizenzserver an.

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

Optimierung von DASH für mobile Geräte

Mobile Anwendungen erfordern aufgrund von Einschränkungen bei Bandbreite und Stromverbrauch eine spezielle DASH-Konfiguration. Zu den wichtigsten Empfehlungen gehören: ein Mindestpuffer von 2-3 Segmenten für Widerstandsfähigkeit gegen kurzzeitige Geschwindigkeitseinbrüche, Verwendung von 2-4 Sekunden langen Segmenten für schnellere Reaktion auf Netzwerkänderungen und Vorabladen des nächsten Segments beim Qualitätswechsel.

Um Datenverkehr in mobilen Netzwerken zu sparen, empfiehlt Bitmovin (2024) die Verwendung von Content Steering — ein Mechanismus ähnlich der entsprechenden Funktion von HLS, der eine dynamische Lenkung des Clients zum optimalen CDN-Knoten ermöglicht. DASH Content Steering wird in der Spezifikation ISO/IEC 23009-1:2022 beschrieben und in dash.js 4.5+ und ExoPlayer 2.18+ unterstützt.

Häufig gestellte Fragen

Wie unterscheidet sich DASH von HLS?

DASH ist ein offener internationaler MPEG-Standard, der nicht an einen Anbieter gebunden ist. Im Gegensatz zu HLS (Apples proprietäres Protokoll) unterstützt DASH beliebige Codecs, verwendet eine XML-Stream-Beschreibung (MPD) anstelle von M3U8 und bietet ein einheitliches DRM-System über CENC. HLS hat native Unterstützung auf iOS, während DASH für plattformübergreifende Lösungen flexibler ist.

Welche Player unterstützen DASH auf mobilen Geräten?

Auf Android ist der primäre DASH-Player der ExoPlayer von Google mit dem Modul exoplayer-dash. Auf iOS werden Drittanbieterlösungen wie libdash mit Integration über AVFoundation oder kommerzielle Player (THEOplayer, Bitmovin) verwendet. In Webbrowsern wird DASH über dash.js mit MediaSource Extensions abgespielt.

Was ist MPD im Kontext von DASH?

MPD (Media Presentation Description) ist eine XML-Datei, die die DASH-Stream-Struktur beschreibt: Inhaltsdauer, verfügbare Bitraten, Auflösungen, Codecs, Segmentformate und deren Speicherorte. Die MPD dient als Einstiegspunkt für den Player und ersetzt die Master-Playlist in HLS. Ohne eine MPD-Datei ist die Wiedergabe von DASH-Inhalten nicht möglich.

Unterstützt DASH Live-Übertragungen?

Ja, DASH unterstützt sowohl VOD als auch Live-Übertragungen. Für Live wird der dynamic MPD-Typ mit automatischer Aktualisierung verwendet. Der Server aktualisiert regelmäßig die MPD, fügt neue Segmente hinzu und entfernt veraltete. Low-Latency DASH (LL-DASH) mit Chunked-Codierung erreicht eine Latenz von 3-8 Sekunden, vergleichbar mit LL-HLS.

Wie funktioniert DRM in DASH?

DASH verwendet Common Encryption (CENC, ISO/IEC 23001-7), das es ermöglicht, Medieninhalte einmal zu verschlüsseln und mit jedem DRM-System zu entschlüsseln. Die MPD enthält ContentProtection-XML-Elemente mit Angabe der unterstützten DRMs (Widevine, PlayReady, FairPlay). Der Player wählt das passende DRM basierend auf der Plattform aus und fordert eine Lizenz über die angegebene URL an.

Zusammenfassung

  • MPEG-DASH ist ein offener internationaler Standard für adaptives HTTP-Streaming mit XML-Stream-Beschreibung im MPD-Format.
  • Codec-Unabhängigkeit — DASH unterstützt H.264, HEVC, AV1, VP9 und alle anderen dem Player verfügbaren Codecs.
  • CENC bietet eine einheitliche Inhaltsverschlüsselung für alle DRM-Systeme und vereinfacht die Lizenzierung.
  • ABR-Algorithmen (BOLA, Pensieve) minimieren Bitratenwechsel und gewährleisten eine stabile Wiedergabe.
  • Android — DASH wird nativ in ExoPlayer unterstützt; iOS erfordert Drittanbieter-Bibliotheken.
  • LL-DASH reduziert die Latenz von Live-Übertragungen auf 3-8 Sekunden.
  • Empfohlen wird die Verwendung von DASH für plattformübergreifende Projekte, bei denen Codec- und DRM-Flexibilität wichtig ist.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch