WebM: een open container voor het web
WebM is een multimediacontainerformaat ontworpen voor het web. Het werd door Google uitgebracht in mei 2010 als onderdeel van het WebM-project, een initiatief om open, royaltyvrije videostandaarden voor HTML5 te vestigen. Het formaat is gebaseerd op de Matroska-container (dezelfde technologie achter MKV-bestanden), specifiek aangepast voor weblevering.
WebM-bestanden bevatten video gecodeerd met de codecs VP8, VP9 of AV1 en audio gecodeerd met Vorbis of Opus. Al deze codecs zijn open source en royaltyvrij, wat betekent dat iedereen WebM-inhoud kan coderen, decoderen en distribueren zonder octrooilicentiekosten te betalen.
Belangrijk punt: WebM is een container, geen codec. Het is de verpakking die de daadwerkelijke video- en audiogegevens bevat. De kwaliteit wordt bepaald door de codec erin (VP8, VP9 of AV1), niet door de WebM-container zelf.
De geschiedenis van WebM
Het verhaal van WebM begint met On2 Technologies, een bedrijf in videocodecs dat de VP-reeks codecs ontwikkelde. Google nam On2 over in februari 2010 voor 124,6 miljoen dollar, voornamelijk vanwege de VP8-codec. In mei 2010 maakte Google VP8 open source onder een BSD-achtige licentie en kondigde het WebM-formaat aan op de Google I/O-conferentie.
De timing was strategisch. In 2010 werd de HTML5-<video>-tag gestandaardiseerd, maar het web had geen royaltyvrije videocodec waar alle browserleveranciers het over eens konden worden. H.264 was octrooibelast via MPEG LA, waardoor het voor gratis en open source software onmogelijk was om deze op te nemen zonder licentieproblemen. Google positioneerde WebM als het open alternatief.
Chrome en Firefox namen de WebM-ondersteuning onmiddellijk over. Opera volgde. Microsofts Internet Explorer en Apples Safari hielden vol en bleven alleen H.264 ondersteunen. De „codec-oorlog" van 2010-2015 vormde het webvideolandschap dat we vandaag hebben — en leidde uiteindelijk tot de ontwikkeling van VP9 (2013) door Google en de gezamenlijke ontwikkeling van AV1 (2018) met de Alliance for Open Media.
Codecs binnen WebM
Een WebM-bestand kan een van de drie videocodecs en een van de twee audiocodecs bevatten:
| Codec | Type | Uitgebracht | Belangrijkste kenmerk |
|---|---|---|---|
| VP8 | Video | 2010 | Eerste WebM-codec; vergelijkbaar met H.264 Baseline |
| VP9 | Video | 2013 | ~30 % kleiner dan H.264 bij gelijke kwaliteit; gebruikt door YouTube voor 4K |
| AV1 | Video | 2018 | ~30 % kleiner dan VP9; open codec van de volgende generatie |
| Vorbis | Audio | 2000 | Open source lossy audio; gekoppeld aan VP8 |
| Opus | Audio | 2012 | Beste beschikbare lossy audiocodec; verslaat AAC bij elke bitrate |
VP9 is tegenwoordig de meest gebruikte videocodec in WebM-bestanden. YouTube nam VP9 in 2014 in gebruik en gebruikt het om het merendeel van zijn inhoud te leveren, inclusief alle 4K-streams. VP9 bereikt ongeveer 30 % betere compressie dan H.264 bij dezelfde waargenomen kwaliteit, wat zich vertaalt in aanzienlijke bandbreedtebesparingen op de schaal van YouTube.
AV1 is de nieuwste generatie, gezamenlijk ontwikkeld door de Alliance for Open Media (AOM) — een consortium waartoe Google, Mozilla, Microsoft, Apple, Amazon, Netflix en anderen behoren. AV1 verbetert VP9 met nog eens ~30 %, maar het coderen is aanzienlijk langzamer. De browserondersteuning voor AV1 in WebM groeit snel, waarbij Chrome 70+, Firefox 67+ en Edge 79+ het allemaal ondersteunen.
Opus wordt algemeen beschouwd als de beste bestaande lossy audiocodec. Het overtreft AAC, MP3 en Vorbis bij elke bitrate in blinde luistertests. Opus verwerkt alles, van spraak met lage bitrate (6 kbps) tot hifi-muziek (510 kbps) met een enkele codec, waardoor het ideaal is voor webvideo.
Waar WebM wordt gebruikt
WebM is diep verankerd in het webecosysteem:
- YouTube: levert het merendeel van zijn video-inhoud met VP9 in WebM-containers. Wanneer je een YouTube-video in Chrome of Firefox in 4K bekijkt, kijk je vrijwel zeker naar WebM.
- Wikipedia / Wikimedia Commons: vereist WebM (of Ogg) voor alle video-uploads. MP4 is expliciet niet toegestaan vanwege zorgen over octrooilicenties.
- WebRTC: de realtime communicatiestandaard die wordt gebruikt door Google Meet, Discord en talloze videoconferentie-apps gebruikt VP8/VP9 als verplichte videocodec, meestal in WebM-containers.
- Reddit / Imgur: veel „GIF"-alternatieven op Reddit en Imgur zijn eigenlijk stille VP9 WebM-video's, die 10–50x kleiner zijn dan echte geanimeerde GIF's.
- HTML5 <video>: WebM is een eersteklas formaat voor het HTML5-video-element, native ondersteund door Chrome, Firefox, Edge en Opera sinds hun vroegste versies.
- MediaRecorder API: wanneer webapplicaties video opnemen via de browser (schermopname, webcamopname), gebruiken de meeste browsers standaard het WebM-formaat.
Schaalperspectief: YouTube alleen levert meer dan 1 miljard uur video per dag. Het merendeel daarvan wordt geleverd als VP9 WebM. Naar kijktijd is WebM aantoonbaar het meest geconsumeerde videoformaat ter wereld.
Browser- & apparaatondersteuning
WebM-ondersteuning varieert per browser en apparaat:
| Platform | WebM VP9-ondersteuning | Opmerkingen |
|---|---|---|
| Chrome | Volledig | Sinds Chrome 29 (2013) |
| Firefox | Volledig | Sinds Firefox 28 (2014) |
| Edge | Volledig | Sinds Edge 79 (Chromium-gebaseerd, 2020) |
| Opera | Volledig | Sinds Opera 16 (2013) |
| Safari (macOS) | Volledig | Sinds Safari 16.4 (maart 2023, macOS Ventura) |
| Safari (iOS) | Volledig | Sinds iOS 16.4 (maart 2023) |
| Android | Volledig | Sinds Android 4.4 (VP8 sinds 2.3) |
| Smart-tv's | Gedeeltelijk | YouTube-app gebruikt VP9; native afspelen verschilt per fabrikant |
| VLC Player | Volledig | Platformoverschrijdend, bevat VP8/VP9/AV1-decoders |
Vanaf 2026 wordt WebM VP9 wereldwijd ondersteund door meer dan 97 % van de webbrowsers (bron: Can I Use). De laatste grote achterblijver was Safari, die in maart 2023 VP9-ondersteuning toevoegde. Voor webontwikkelaars is WebM nu een veilig standaardformaat voor HTML5-video.
Technische structuur van WebM-bestanden
WebM is een profiel (subset) van het Matroska-containerformaat. Matroska (MKV) is een zeer flexibele, open source container die vrijwel elke codeccombinatie ondersteunt. WebM beperkt deze flexibiliteit tot een specifieke set open codecs:
- EBML-header: het eerste element in elk WebM-bestand, dat het identificeert als een Matroska-gebaseerd document met het WebM-DocType. Dit is analoog aan het
ftyp-atoom in MP4. - Segment: het hoofdelement dat alle mediagegevens bevat, georganiseerd in clusters.
- Tracks: metadata die elke track beschrijft — videoresolutie, framerate, codec-ID, audiosamplefrequentie en aantal kanalen.
- Clusters: groepen gecodeerde video- en audioframes met tijdstempels. Elke cluster bevat doorgaans 1–5 seconden media.
- Cues: een zoekindex voor willekeurige toegang, vergelijkbaar met de sampletabellen van het
moov-atoom in MP4.
WebM-bestanden kunnen worden geconfigureerd voor streaming door het Cues-element vóór de Clusters te plaatsen (analoog aan faststart in MP4). Hierdoor kan de browser binnen de video navigeren zonder eerst het hele bestand te downloaden.