HLS und DASH: So funktioniert adaptives Streaming
4 Min. Lesezeit
Wenn du schon einmal gesehen hast, dass ein Video unscharf beginnt und nach ein paar Sekunden scharf wird, oder dass die Qualität sinkt, wenn das WLAN schwächelt, hast du adaptives Streaming in Aktion erlebt. Fast alle Videos im Internet werden so ausgeliefert, mit zwei Verfahren: HLS und DASH. Sie funktionieren ähnlich, und wer sie versteht, kann vieles einordnen, was wie ein Fehler aussieht, aber keiner ist.
Die Idee: zerlegen und mehrere Qualitätsstufen anbieten
Statt einer riesigen Datei speichert der Server das Video in Segmente von wenigen Sekunden zerlegt. Und zwar nicht nur einmal, sondern mehrfach: derselbe Film in 1080p, in 720p, in 480p, jede Version mit ihrer eigenen Datenrate, der Bitrate. Der Player lädt zuerst ein Inhaltsverzeichnis herunter, das Manifest, das ihm sagt, welche Versionen es gibt und wo jedes Stück liegt. Dann fordert er die Segmente eines nach dem anderen an und wählt jeweils die Qualität, die deine Verbindung seiner Einschätzung nach durchhält.
Die Vorteile liegen auf der Hand: Das Video startet schnell, weil es mit leichten Stücken beginnt, passt sich ohne Unterbrechung an das Netz an und lässt dich an jede Stelle springen, wobei nur das Nötige geladen wird. Live-Übertragungen funktionieren genauso: Das Manifest wird laufend um die neuen Segmente ergänzt.
HLS
HLS (HTTP Live Streaming) wurde von Apple entwickelt und ist am weitesten verbreitet. Sein Manifest ist eine Textdatei mit der Endung .m3u8, und davon gibt es zwei Arten.
Die Master-Playlist zählt die verfügbaren Qualitätsstufen auf. Jede hat ihre Bandbreite, ihre Auflösung und ihre Codecs:
#EXTM3U#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2"1080p/index.m3u8#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"720p/index.m3u8
Die Media-Playlist jeder Qualitätsstufe zählt ihre Segmente auf und wie lange jedes dauert:
#EXTM3U#EXT-X-TARGETDURATION:6#EXTINF:6.0,segmento-001.ts#EXTINF:6.0,segmento-002.ts#EXT-X-ENDLIST
Das Tag #EXT-X-ENDLIST zeigt an, dass das Video vollständig ist, es also auf Abruf läuft. Fehlt es, handelt es sich um eine Live-Übertragung, und der Player fordert die Liste alle paar Sekunden neu an. Die Segmente können TS oder fMP4 sein (fragmentiertes MP4, erkennbar am Tag #EXT-X-MAP). Ton in anderen Sprachen und Untertitel können als eigene Spuren kommen, deklariert mit #EXT-X-MEDIA.
Übrigens: Dass das HLS-Manifest dieselbe Endung hat wie viele Videolisten, sorgt für Verwirrung; wir klären das unter M3U, M3U8 und W3U.
DASH
DASH (Dynamic Adaptive Streaming over HTTP, oder MPEG-DASH) ist ein offener internationaler Standard. Sein Manifest ist eine XML-Datei mit der Endung .mpd. Es ordnet den Inhalt in sogenannte Adaptation Sets (das Video, der Ton jeder Sprache, die Untertitel) und darin in Representations, also die Qualitätsstufen. Viele Plattformen und Websites nutzen es. Für dich als Zuschauer ist der Unterschied zu HLS praktisch null: Es ändert sich das Format des Verzeichnisses, nicht die Idee.
Warum wechselt die Qualität?
Der Player misst, wie schnell die Segmente ankommen und wie viele Sekunden er im Voraus gespeichert hat, den Puffer. Läuft der Download mit viel Luft, geht er in der Qualität hoch; wird es knapp, geht er herunter, bevor ihm das Video ausgeht. Deshalb:
- Der Start ist oft unscharf: Der Player weiß noch nicht, was deine Verbindung schafft, und beginnt vorsichtig.
- Die Qualität sinkt, wenn ein anderes Gerät zu Hause etwas herunterlädt oder wenn du dich vom Router entfernst.
- Es dauert ein paar Sekunden, bis sie wieder steigt, auch wenn das Netz besser wird, weil sie beim nächsten Segment wechselt, nicht sofort.
- Ein Video kommt vielleicht nicht über 720p hinaus, obwohl du Glasfaser hast, wenn der Server nicht mehr anbietet oder das Gerät die höhere Version nicht decodieren kann.
Dass die Qualität eine Weile sinkt, ist kein Fehler: So verhindert das System eine Unterbrechung. Wenn es oft hängt, sieh dir Aussetzer, Ruckeln und langsames Laden an.
Live, Verzögerung und Zeitfenster
Bei einer Live-Übertragung springt der Player nicht zur zuletzt gesendeten Sekunde, sondern bleibt ein paar Segmente dahinter, um Spielraum zu haben. Deshalb läuft ein Livestream im Internet meist zeitversetzt zum klassischen Fernsehen, und zwei Geräte können auseinanderlaufen. Manche Übertragungen lassen dich eine Weile zurückspulen, so weit das Zeitfenster des Manifests reicht; andere bieten nur die letzten Segmente an.
Verschlüsselung und DRM
HLS kann die Segmente mit AES-128 und einem Schlüssel verschlüsseln, der von einer Adresse heruntergeladen wird. Das ist kein DRM: Jeder HLS-Player öffnet so etwas, wenn er den Schlüssel herunterladen kann, und Whatplay auch. DRM (Widevine, PlayReady, FairPlay) ist etwas anderes: ein an das Gerät gebundenes Lizenzsystem, das Bezahlplattformen nutzen und das bei HLS mit Methoden wie SAMPLE-AES und bei DASH mit dem Tag ContentProtection deklariert wird. Whatplay spielt keine DRM-geschützten Inhalte ab; wir erklären das unter Der Browser von Whatplay und DRM.
HLS und DASH in Whatplay
- Du kannst die Adresse einer .m3u8 oder einer .mpd in eine Liste aufnehmen oder sie einmalig mit „Liste hinzufügen“ und „Nur abspielen, nicht speichern“ öffnen.
- Die Qualität wird automatisch gewählt. Unter „Optionen“ im Player siehst du Auflösung und Mb/s dessen, was gerade läuft.
- Wenn eine Website im Browser HLS oder DASH nutzt, zeigt das Fenster „Videos auf dieser Seite“, bis zu welcher Auflösung es geht („bis 1080p“) und wie viele Qualitätsstufen es gibt.
- Beim Übertragen auf einen Chromecast lädt der Fernseher die Segmente meist selbst herunter. Verlangt der Server Zugangsdaten, die der Fernseher nicht senden kann, dient das Handy als Brücke und muss im WLAN bleiben.