wat komt er kijken bij het comprimeren doormiddel van CODECs

... terug

er zijn nog al wat frustraties geweest die te doen hebben met het kopen van een nieuwe camera om er vervolgens achter te komen dat het geschoten materiaal niet dan met de bijgeleverde software te bewerken is. erg vervelend als je net voor veel geld een mooi pakket gekocht denkt te hebben. de codec van de camera wordt dan nog niet goed ondersteund.

wat houdt zo'n codec nou eigenlijk in?

 

filmstrip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8 * 8 frame verdeling

 

wat is een codec

codec [co/dec] staat voor CODer/DECoder. het is het [digitale] hart van elke bestandsstructuur die gebruikt wordt voor het opslaan van gecomprimeerde video en audio.

 

parameters voor een codec

een codec probeert de volgende [vaak inheren tegenstrijdige] doelstellingen zo goed mogelijk te combineren:

  • bestanden zo klein mogelijk houden [scheelt ruimte op je media waardoor je deze minder vaak hoeft te wisselen]
  • grote danwel hoge bandbreedte. de bitdiepte en de resolutie vormen samen het pallet waarmee de analoge werkelijkheid moet worden vastgelegd. de bitdiepte [aantal bits per pixel] maal de resolutie [pixels in de hoogte maal pixels in de breedte] vormt samen de ruwe informatie hoeveelheid per frame [RAW frame]. de informatie per frame maal het aantal frames per seconde, vormt samen de ruwe data hoeveelheid per seconde [ook wel bekend als bitrate]. hoe hoger deze ruwe data hoeveelheid, hoe hoger je dus theoretisch in de buurt van de werkelijkheid komt. natuurlijk gaan er dan ook zaken meespelen als signal to noise ratio en andere kwaliteitskenmerken van je sensor. alleen maar meer megapixels is niet zaligmakend.
  • de kwaliteit van de opname zo goed als mogelijk houden [uitgaande van het originele door de sensor vastgelegde signaal volgen er een aantal stappen als: digitalisering, buffering, compressie en opslag]
  • CRC: om in de gaten te houden of het signaal ook opgeslagen is zoals het is gecodeerd, moeten fouten kunnen worden herkend en gecorrigeerd. daar hoort dus een mate van fouttolerantie en foutcompensering bij. dit kan zowel hardwarematig zijn bij het lezen en schrijven van het medium als softwarematig bij het herkennen van dropouts in bijvoorbeeld de tijdcode
  • benodigde rekenkracht beperkt houden. afhankelijk van waar de codec voor gebruikt wordt, wil je zorgen dat in ieder geval het afspelen van een gecomprimeerd bestand zo weinig mogelijk processortijd gebruikt. niemand zit te wachten op een codec die heel goed comprimeerd maar een dag vergt om een frame weer toonbaar te maken. zeker als je de gegevens niet alleen maar wil afspelen maar ook nog wil bewerken, scheelt het heel veel als een codec 'licht' draait.
  • generatievastheid. probeer voor de grap eens een videoband [de ouderwetse VHS is een erg goed voorbeeld] een aantal malen te kopieeren. van de ene tape naar de volgende naar de volgende etc. je zult zien dat elke nieuwe kopie [wat in dit geval gelijk staat aan elke nieuwe generatie] slechter van kwaliteit is. De vraag is dus of je met je codec in staat bent om een 1:1 digitale kopie te draaien. verder is de vraag of je codec je in staat stelt om alleen de gebieden die je edit opnieuw te comprimeren in plaats van het hele filmpje opnieuw te comprimeren. veel van de hiervoor benodigde voorwaarden zijn geimplementeerd in huidige NLE's. NDE [non destructive editing] is een vorm van editen waarvoor elke aanpassing een proxy wordt gemaakt. er wordt dan als het ware een file aangemaakt waar de wijzigingen in opgeslagen worden, gerendered en al, zodat je tijdens het afspelen precies kan zien wat je hebt gewijzigd ten opzichte van het origineel, maar waarbij het origineel niet wordt aangepast. als je vervolgens tevreden bent met je geheel, kan je alles in een keer exporteren waarbij wederom het origineel behouden blijft. dit is een goede manier van werken die de uiteindelijke kwaliteit van je product zeer ten goede komt.
  • dynamisch. aanpasbaar aan de wensen van de gebruiker. framerate, resolutie en andere zaken zijn nog wel eens wisselend per productie. het zou ideaal zijn om die te kunnen varieren

de kenmerken van een goede codec

een goede codec is dus:

  • lossless of daar zo dicht als mogelijk tegen aan [i.e. tijdens de compressie/decompressie gaat geen of zo weinig mogelijk informatie verloren]
  • kwaliteitief hoogstaand [hoge resoluties mogelijk met grote kleurdiepte en hoge framerates]
  • niet processor intensief [er blijft dan namelijk veel rekenkracht over om realtimebewerkingen te doen met het materiaal]
  • krachtig [grote ratio tussen binnenkomend en uitgaand materiaal: dus weinig ruimte voor opslag benodigd]
  • flexibel [als je veel parameters kunt wijzigen zonder dat de codec er relatief veel onder te lijden heeft in prestaties, kan je de codec dus voor veel doeleinden gebruiken]
  • foutcorrigerend [doormiddel van checksums en andere trucs kan de codec bepalen of de gelezen informatie overeenkomt met hoe deze informatie bijvoorbeeld opgebouwd zou moeten zijn].
  • generatievast [kopieen kunnen 1:1 gemaakt worden,mogelijkheid tot NDE]

daarnaast zijn er nog eisen die al dan niet van belang zijn afhankelijk van het doel van het uiteindelijke materiaal

  • streambaarheid [in hoeverre houdt een codec rekening met het over het net versturen en aan meerder bronnen tegelijk aanbieden van een en dezelfde file die realtime afgespeeld moet kunnen worden zonder lokaal opgeslagen te moeten worden. een beperkte vorm van opslag al dan niet in het werkgeheugen van de ontvangende/kijkende partij is dan juist vaak wel weer wenselijk om een vloeiende weergave te garanderen. dit wordt bufferen genoemd]. hierbij wordt er vaak ingeleverd op de kwaliteit ten gunste van een hoge compressiefactor.
  • bescherming tegen illegaal gebruik. om je rechten als maker of verspreider te kunnen waarborgen kan gebruik worden gemaakt van versleuteling en watermerken. het een voorkomt het illegaal afspelen, de ander spoort het illegaal verspreiden op. dit wordt samen gevat onder de term DRM [digital rights management]. hieronder vallen ook selectieve vormen van toegangscontrole zoals leeftijdsindicaties en andere keurmerken. als laatste kan aangestipt worden dat je de bestanden op deze manier een houdbaarheid kan geven van bijvoorbeeld een enkele maal afspelen tot oneindig. voorbeelden hiervan zijn bijvoorbeeld de regiocodering van DVD en Macrovision.
  • toespitsing of effectiviteit voor specifieke types video. zoals wellicht te begrijpen valt, is animatie en tekenfilm vaak heel anders van beeldopbouw dan speelfilms. dit kan inhouden dat een bepaalde codec erg goed is in het coderen van grote gelijke vlakken en lijnen maar erg slecht is in het weergeven van subtiele contrast- en kleurverschillen.

 

verschillende manieren van compressie

  • kleurdiepte verkleinen: door kleuren die veel op elkaar lijken dezefde relatieve waarde toe te kennen kan je bemonsteringsdiepte kleiner zijn. voor een leuke vergelijking wat kleurdiepte sampeling en resultaten daarin met het zelfde bronmateriaal kan je een kijkje nemen op deze site. hier worden DVCPro50 [4:2:2] en DV[4:2:0 en 4:2:1] met elkaar vergeleken.
  • herhalende onderdelen. blokken maken die vrijwel hetzelfde zijn en die gebruiken als ware het grote pixels. je hoeft dan maar een deel op te slaan om een paar keer te gebruiken
  • interframe herhaling: dezelfde truc als hierboven kan je ook van frame naar frame gebruiken. de kans is groot dat als een vorig frame een gezicht laat zien, het huidige frame dat ook doet en het volgende ook.
  • alleen veranderingen opslaan.

 

variabele en constante bitrate [VBR/CBR]

dynamische compressie kan worden behaald door de compressie constant te toetsen aan het origneel. als het te vergelijken gecomprimeerde frame binnen een bepaalde waarde genoeg lijkt op het origineel, dan is de bitrate dus voldoende om de kwaliteit te garanderen. zo niet dan moet dus de birate worden verhoogd of mag hij in sommige gevallen worden verlaagd. Het gaat dan dus eerder om een constante kwaliteit dan om een constante bitrate. we noemen het daarom ook wel variabele bitrate [VBR] en constant bitrate encoding [CBR]. het voordeel van een constante bitrate is te zoeken in de voorspelbaarheid van de hoeveelheid data, die van een variabele bitrate in de voorspelbaarheid van de kwaliteit van de data onder wisselende omstandigheden.daarbij kan nog onderscheid worden gemaakt tussen single en two-pass. waarbijsinglepass slechte een klein deel van de film analyseert alvorens de bitrate settings aan te passen en dualpass feitelijk eerst de compressie-eisen van de film helemaal in kaart brengt en in de 2de ronde [second pass] de compressie zoals berekend in de eerste pass toepast.

 

GOP en NON-GOP

daarnaast hebben we nog twee significant verschillende vormen van coderen en dat verschil zit in het al dan niet toepassen van GOP's. een GOP [group of pictures] is een kleine aan de codec specifieke groep frames waarop ondeling vergelijkende algoritmes worden losgelaten. een GOP bestaat standaard uit een IBP formatie.

  • I [intra] frame is het referentiekader, het origineel waar alle andere frames doormiddel van wijzigingen ten opzichte van het I frame aan refereren
  • P [predicting] frame is een predicting frame, wat inhoudt dat het een delta/verschil bijhoudt t.o.v. van het vorige I frame.
  • B [bi-directive] frame is net als het P-frame een delta frame dat een delta/verschil bijhoudt t.o.v. van zowel het vorige als het volgende frame waardoor er nog meer informatie overbodig wordt
een standaad MPEG frame heeft 15 pictures in een groep die op de volgende manier zijn gestructureerd: I BB P BB P BB P BB P BB waarna de structuur zich blijft herhalen met elke keer een break op het I frame.

voorbeelden van GOP [interframe] gebaseerde compressie zijn:

  • MPEG
  • H264
  • MPEGII
  • HDV
  • DV
  • sorenson
  • realsystems
  • XDCAM

daarbij dient te worden vermeld dat veel van de bovenstaande compressoren ook een non GOP mogelijkheid bieden die typisch wordt aangeduid met I-frame. i.e. MPEG I-frame. dit omdat er alleen I-frames worden gebruikt.

voorbeelden van NON-GOP [intra-frame] zijn:

  • DVCProHD
  • M-JPEG

afwegingen tussen GOP en NON-GOP

als een codec geen gebruik maakt van GOP, dan wordt de informatie dus per frame opgeslagen. hoewel je dan de voordelen mist die gepaard gaan met het gebruik kunnen maken van wijzigingen ten opzichte van het vorige en het volgende frame, heb je wel een heel erg sterk ander voordeel. een GOP wijzigen, i.e. een frame aanpassen uit een IBP reeks, houdt in dat je de hele groep van frames uit die GOP eerst moet uitrekenen om tot de juiste frame-informatie te komen [tenzij het natuurlijk het originele I frame betreft] en daarna na je bewerking altijd ook nog eens de hele GOP opnieuw moet coderen.

ten opzichte van een frame gebaseerde codec kost dit dus relatief veel processorkracht. je kan je dan ook voorstellen dat dit soort codecs 'zwaarder' draait waardoor er minder realtime effecten en dergelijk kunnen worden berekend.

daarnaast moet je terdege rekening houden dat een fout die door de foutcorrectie heenkomt bij een non-GOP compressie maar 1 frame aantast; terwijl een fout in een enkel frame bij een GOP structuur door kan werken in alle frames van de GOP.

sommige NLE's hebben verder moeite met frame-accurate cuts en het frame-accuraat sync [aan elkaar gelijk zodat bijvoorbeeld de lipbewegingen gelijk liggen aan de opgenomen spraak] leggen van audio en video.

 

toepassen van bovenstaande bij het coderen van materiaal

bij het coderen van GOP gebaseerde content [voor bijvoorbeeld DVD] dien je er op te letten dat deze manier van coderen veel last heeft van:

  • hoog contrast
  • verlopen van vlakken in helderheid of kleur [gradients]
  • plotselinge overgangen
  • snel bewegende objecten

in finalcut pro kan je de compressor een handje helpen door van te voren handmatig met compressie markers aan te geven waar deze plekken zich bevinden.

andere trucs zijn:

  • het toepassen van VBR [zoals hier boven uitgelegd] levert op momenten waar nodig extra bandbreedte op]
  • het gebruiken van multipass-VBR [dit kost veel meer rendertijd omdat de compressor grotere stukken film vergelijkt om tot een betere setting te komen
  • het verhogen van de alghele bandbreedte [wat dus als nadeel heeft dat er minder op je DVD past]
een klein beetje onderzoek naar de codec die je denkt toe te gaan passen kan je dus een hoop tijd schelen.
 

 

IBP

 

encoding scheme MPEG

fout gevonden, iets toe te voegen? mail ons even! dank je wel. wil je informatie uit dit stuk gebruiken wees dan zo vriendelijke een linkje op te nemen naar deze pagina in plaats van copy-paste.

 

 

 

 

  Invite-AV - Advies over en verhuur van beamers, hd camera's en audio apparatuur.
   Phoenixstraat 56   2611 AM Delft   tel 06.17140481   fax 015.21127631   info@invite-av.nl