HLS Streaming
HLS (HTTP Live Streaming) is een video-streamingprotocol dat Apple in 2009 ontwikkelde en nu de dominante standaard is voor het uitleveren van video op het web. Het knipt een video in kleine, opeenvolgende segmenten (meestal 2-10 seconden per stuk) en levert elk segment via gewone HTTP.
Hoe het werkt
- De encoder maakt meerdere varianten van de video op verschillende resoluties/bitrates (360p, 720p, 1080p, enz.).
- Elke variant wordt gesegmenteerd — opgeknipt in stukken van vaste duur.
- Een master-playlist (
.m3u8-bestand) somt alle varianten en hun bandbreedtevereisten op. - Elke variant heeft een media-playlist met de segmenten in volgorde.
- De player laadt de master, kiest een variant, downloadt segmenten op volgorde en rijgt ze aaneen tot doorlopende weergave.
- De player past zich aan — meet de downloadsnelheid en wisselt op segmentgrenzen omhoog of omlaag van variant.
Waarom HLS won
- HTTP-levering — werkt door elke firewall, elk CDN, elke browser. Geen speciale protocollen nodig.
- Adaptieve bitrate — kwaliteit past zich naadloos aan de netwerkomstandigheden aan.
- Cachebare segmenten — onveranderlijke segmenten cachen uitstekend aan de CDN-edge.
- Native ondersteuning — elke grote browser, elk tv-platform, elk mobiel OS ondersteunt HLS native of via libraries (HLS.js voor Chrome/Firefox).
- Versleutelingsvriendelijk — segmenten kunnen op segmentniveau met AES-128 worden versleuteld (encryptie), met sleutels die los worden geleverd.
Alternatieven
- DASH (Dynamic Adaptive Streaming over HTTP) — vergelijkbaar met HLS maar gestandaardiseerd via MPEG. Meer codec-flexibiliteit, minder browserondersteuning out of the box.
- WebRTC — sub-seconde latency, peer-to-peer of via SFU. Voor live interactief (videovergaderen) — niet voor VOD.
- Progressive download (gewoon een MP4 over HTTP) — eenvoudig, geen adaptatie, geen streamingcontrole. Prima voor korte clips, slecht voor lange video.
Bestandsextensies
.m3u8— playlist-bestand (master of media).ts— MPEG-TS-segment (legacy).m4s— gefragmenteerd MP4-segment (modern, wat HLS sinds 2017 gebruikt)
Bij AVCaption
Elke video die naar AVCaption wordt geüpload, wordt gecodeerd als HLS met AES-128 multi-key-encryptie. De player kiest automatisch HLS.js voor niet-Safari-browsers en native HLS op Safari. Zie adaptive bitrate streaming voor details.