HLS Streaming
HLS (HTTP Live Streaming) ist ein Video-Streaming-Protokoll, das Apple 2009 entwickelt hat und heute der dominierende Standard für die Auslieferung von Video im Web ist. Es zerschneidet ein Video in kleine, aufeinanderfolgende Segmente (typischerweise 2-10 Sekunden lang) und liefert jedes Segment über schlichtes HTTP aus.
Funktionsweise
- Der Encoder erzeugt mehrere Varianten des Videos in unterschiedlichen Auflösungen/Bitraten (360p, 720p, 1080p usw.).
- Jede Variante wird segmentiert — in Stücke fester Länge zerlegt.
- Eine Master-Playlist (
.m3u8-Datei) listet alle Varianten und ihren Bandbreitenbedarf. - Jede Variante hat eine Media-Playlist, die ihre Segmente in Reihenfolge auflistet.
- Der Player lädt die Master-Playlist, wählt eine Variante, lädt die Segmente nacheinander und fügt sie zu einer durchgehenden Wiedergabe zusammen.
- Der Player passt sich an — misst die Downloadgeschwindigkeit und wechselt die Variante an Segmentgrenzen nach oben oder unten.
Warum sich HLS durchgesetzt hat
- HTTP-Auslieferung — funktioniert durch jede Firewall, jedes CDN, jeden Browser. Keine Sonderprotokolle nötig.
- Adaptive Bitrate — Qualität passt sich nahtlos an die Netzbedingungen an.
- Cache-fähige Segmente — unveränderliche Segmente lassen sich am CDN-Edge gut cachen.
- Native Unterstützung — jeder große Browser, jede TV-Plattform, jedes Mobil-OS unterstützt HLS nativ oder über Bibliotheken (HLS.js für Chrome/Firefox).
- Verschlüsselungsfreundlich — Segmente lassen sich auf Segmentebene mit AES-128 verschlüsseln (Verschlüsselung), wobei Schlüssel separat ausgeliefert werden.
Alternativen
- DASH (Dynamic Adaptive Streaming over HTTP) — ähnlich wie HLS, aber per MPEG standardisiert. Flexibler bei Codecs, weniger Browser-Support out of the box.
- WebRTC — Latenz unter einer Sekunde, peer-to-peer oder via SFU. Für interaktives Live (Konferenzen) — nicht für VOD.
- Progressive Download (einfach ein MP4 über HTTP) — simpel, ohne Adaption, ohne Streaming-Kontrolle. Gut für kurze Clips, schlecht für lange Videos.
Dateiendungen
.m3u8— Playlist-Datei (Master oder Media).ts— MPEG-TS-Segment (Legacy).m4s— fragmentiertes MP4-Segment (modern, das HLS seit 2017 nutzt)
Bei AVCaption
Jedes auf AVCaption hochgeladene Video wird als HLS mit AES-128 Multi-Key-Verschlüsselung kodiert. Der Player wählt automatisch HLS.js für Nicht-Safari-Browser und natives HLS auf Safari. Siehe Adaptive Bitrate Streaming für Details.