In de wereld van de digitale video kom je al snel allerlei verwarrende technische termen tegen zoals formaat, container en codec. De laatste term doet ook van zich spreken op het moment dat je mediaspeler een bepaalde film niet wil afspelen met de melding dat codecs ontbreken. Als je die dan wilt installeren vanuit de repository van je Linux-distributie, kom je vervolgens tot de onaangename verrassing dat ze niet beschikbaar zijn. Voor veel mensen is het een onbegrijpelijk geheel. Daarom geven we in dit artikel een toelichting op de digitale video.

Beeld en Geluid

In essentie komt het maken van digitale video neer op twee zaken:

– comprimeren van beeld en geluid;

– bundelen van beeld en geluid.

 

 Bijschrift: Beeld en geluid worden gecomprimeerd door de codec. De muxer vervlecht ze en bundelt ze samen met ondertiteling e.d. in de container.

 

Het comprimeren is bedoeld om het videobestand kleiner te maken. Hoewel we tegenwoordig gewend zijn aan grote harde schijven, neemt ongecomprimeerde video erg veel ruimte in beslag. Video van HD-kwaliteit produceert zonder compressie grofweg 100 MB per seconde. Anders gezegd, een speelfilm van 2 uur wordt een bestand van pakweg 700 GB! Omdat je zonder waarneembaar kwaliteitsverlies sterk kunt comprimeren, bespaar je hiermee veel ruimte. Het comprimeren heet coderen of iets preciezer encoderen.

 

Afgezien van het feit dat het onhandig is om met losse bestanden voor audio en video te werken, is er nog een belangrijker nadeel. Met twee aparte bestanden bestaat de kans dat beeld en geluid niet in de pas lopen of dat aanvankelijk wel doen maar na verloop van tijd niet meer. Er is extra informatie nodig om beeld en geluid synchroon te laten lopen. Dit is een belangrijke taak van het bundelen: beeld en geluid worden in stukjes gehakt, vervolgens als het ware met elkaar vervlochten en synchronisatie-informatie wordt toegevoegd. Dit bundelen heet muxen. Het bestandsformaat dat de muxer oplevert, is de container en deze bevat afwisselend stukjes audio en video. Bekende containerformaten zijn AVI en MP4.

 

Als je nu een film bekijkt, haalt de mediaspeler het vervlochten beeld en geluid uit elkaar. Dat heet demuxen. Vervolgens worden audio en video gedecomprimeerd door het te decoderen. De software die het encoderen en decoderen uitvoert, is de codec. Dat staat voor coder-decoder. Bekende codecs voor audio zijn MP3 en Vorbis. Voor video zijn dat bijvoorbeeld DivX en x264.

 

Zoals je in de afbeelding ziet, is de container niet beperkt tot audio en video. Bijna altijd hebben ze de mogelijkheid om informatie, zoals de filmregisseur of acteurs op te slaan. Die toont de mediaspeler tijdens het afspelen. Moderne formaten, zoals MP4 en Matroska, ondersteunen ondertitels, plaatjes zoals filmposters en zelfs menu’s. Daarom kom je ook vaak de term multimedia-container tegen voor deze formaten.

 

Streaming

Die moderne formaten zijn ook geschikt om video te streamen. Streaming video is meer dan een videobestand bekijken, terwijl je het downloadt. Bij streaming video kun je vooruit spoelen of op een willekeurig punt in de video beginnen, zoals je dit kent van YouTube.

 

Het AVI-formaat is niet geschikt voor streaming, omdat de informatie om naar een willekeurig punt in de video te springen, de zogenaamde index, aan het einde staat. De mediaspeler moet daarom eerst het hele videobestand downloaden. Bij moderne containers, zoals MP4 en Matroska, staat de index vooraan, zodat de speler meteen de benodigde informatie heeft. Multimedia servers accepteren meestal wel AVI-bestanden. Om te streamen, zetten zij het AVI-formaat om naar een geschikt formaat. Dat proces heet transmuxen en kost maar weinig rekenkracht.

 

Voor streaming video via je webbrowser kwam je tot voor kort vrijwel alleen Flash video tegen. Dit is een containerformaat waarvoor je Adobe’s Flash plug-in moet installeren. Aangezien dat proprietaire software is, leveren veel Linux distributies die niet mee. Met de komst van HTML5 is de situatie verbeterd. Nu is er een standaard methode om video in de webpagina op te nemen. De ondersteunde containers zijn MP4, WebM (gebaseerd op Matroska) en Ogg. Voor webpagina’s die dit gebruiken, heb je geen plug-in nodig.

 

DVD en Blu-ray

DVD en Blu-ray zijn zowel een standaard voor het fysieke schijfje als een videoformaat. Het containerformaat van de DVD heet VOB (Video OBject) en dat van de Blu-ray heet het BDAV (Blu-ray Disk Audio-Video). Naast deze containers staan op een DVD en Blu-ray ook nog tal van andere bestanden in een directory structuur. Die bevatten onder andere het copyright, regio-informatie, gegevens over ondertitels, menu’s en dergelijke.

 

Op een DVD zie je, behalve de directory VIDEO_TS, ook nog een directory AUDIO_TS. In tegenstelling tot wat je misschien verwacht, staat hier niet het geluid van de film. Net als bij andere containers is audio met video gemuxt in de VOB-bestanden. De directory AUDIO_TS was bedoeld voor de zogenaamde audio DVD en is leeg voor de video DVD.

 

Omdat je de schijfjes op standaardapparaten moet kunnen afspelen, is het aantal ondersteunde codecs heel beperkt. Verder gebruiken de DVD en Blu-ray een opmerkelijk formaat voor de ondertitels. Het zijn namelijk zwart-witplaatjes in plaats van tekst.

 

Patenten en licenties

De codecs doen het intelligente deel tijdens het maken en afspelen van een videobestand. Bedrijven en onderzoeksinstellingen ontwikkelen steeds betere compressie-algoritmen en beschermen die met patenten. Voor legaal gebruik moet je dan vaak een licentie kopen. De talloze patenten op dit gebied maken het daardoor moeilijk of onmogelijk om software vrij te distribueren, zoals we dat kennen van Linux.

 

Het feit dat het beleid met betrekking tot patenten per land verschilt, maakt het er niet gemakkelijker op. In de V.S. krijg je bijvoorbeeld eerder een softwarepatent dan in Europa. Het is daarom goed mogelijk dat een codec in het ene land legaal is, maar in het andere niet. Alleen al hierom levert menige Linux distributie dergelijke codecs niet mee. Bovendien hebben veel distributies principieel bezwaar tegen deze codecs, omdat zij juist indruisen tegen vrij verspreidbare software.

 

Het open source project FFmpeg levert bijvoorbeeld onder andere de library libavcodec. Deze bevat codecs die mogelijk inbreuk maken op patenten. Een distributie als Fedora levert daarom geen FFmpeg mee. Omdat de populaire mediaspeler VLC of de video editor Kdenlive FFmpeg gebruiken, vind je die evenmin in de officiële repository van Fedora.

 

Commerciële DVD en Blu-ray films gebruiken bovendien versleutelingstechnieken om de video tegen kopiëren te beschermen. De V.S. stelt door de Digital Millennium Copyright Act (DMCA) het omzeilen van dit soort technieken strafbaar. Om rechtszaken te vermijden hebben veel Linux distributies de software om dit soort schijfjes af te spelen daarom niet in de officiële repository.

 

Licenties voor gepatenteerde versleutelings- en compressietechnieken kosten vaak geld.

 

Tot slot

Digitale video is complex. Over de technische kant hoeven we ons meestal niet te bekommeren, omdat er genoeg software voor handen is. De juridische kant ligt helaas wat lastiger. Gelukkig zijn er naast de officiële repositories ook nog alternatieve repositories, zodat ook de Linux-gebruiker geen film hoeft te missen.

 

Links

Toelichting van Fedora op o.a. niet meegeleverde codecs

fedoraproject.org/wiki/Multimedia

 

Populair alternatief voor Fedora

rpmfusion.org

 

Idem voor Debian

deb-multimedia.org