Zo kun je bestanden en media comprimeren

Door: Toon van Daele | 23 februari 2020 10:02

verwijderde bestanden Android herstellen
Apps & Software

Je mag dan wel enkele TB aan opslagruimte hebben, het zit in onze natuur: we houden alles liefst zo zuinig mogelijk. Als het in 80 kB kan waarom er dan 200 kB aan verspillen? Compressietools helpen je je databestanden compact te houden en voor die gulzige multimediabestanden zet je zogenoemde codecs in. Waarop moet je letten als je bestanden wilt comprimeren en welke hulpprogramma’s zijn zoal beschikbaar?

Tip 01: Lossy en lossless

Er zijn in feite twee manieren waarop je bestanden kunt comprimeren. Bij multimediabestanden bijvoorbeeld gaat het vaak om lossy (verliesgevende) compressie. Hierbij boet je altijd iets aan kwaliteit in en kun je de originele bestanden vanuit de gecomprimeerde versie niet meer terughalen. Met enkele bescheiden artefacten in een video, of een nauwelijks waarneembare vermindering van de geluidskwaliteit valt nog wel te leven.

Maar bij gewone databestanden, zoals documenten of uitvoerbare bestanden, gaat die vlieger niet op. De enige optie die je hier hebt is lossless (verliesloze) compressie. Anders gezegd, wanneer je het bestand uitpakt of decomprimeert moet je bit-voor-bit uitkomen bij het originele bestand, want anders krijg je te maken met datacorruptie.

Lossless versus Lossy
Tip 01 Lossless versus lossy: het exacte origineel krijg je alleen terug via verliesloze compressie.

Tip 02: Werking

Hoe kan een zip-bestand van 100 kB nou dezelfde informatie bevatten als het originele, niet-gecomprimeerde bestand van pak-hem-beet 180 kB? Het geheim zit in het ingebouwde compressiealgoritme, dat slim gebruikt maakt van redundantie oftewel ‘overtolligheid’ (afbeelding 1).

We illustreren dat met een eenvoudig voorbeeld. Zo vereist de zin “Ask not what your country can do for you; ask what you can do for your country” 79 bytes (inclusief spaties en leestekens). Nu zouden we het volgende ad hoc-woordenboek kunnen creëren:

1 ask, 2 what, 3 your, 4 country, 5 can, 6 do, 7 for, 8 you, waarna we met de volgende 'verwijscode' kunnen volstaan: 1 not 2 3 4 5 6 7 8; 1 2 8 5 6 7 3 4. Dit zijn in totaal 36 tekens inclusief spaties. Echter, dat levert slechts een niet bijster indrukwekkende winst van slechts 5 bytes op. Een compressiealgoritme werkt echter niet met woorden maar met patronen, en bovendien is het wel zo slim om gaandeweg het woordenboek aan te passen om het zuinigste resultaat te verkrijgen ('adaptief woordenboek'). Een betere combinatie blijkt dan: 1 ask_, 2 what_, 3 you, 4 r_country, 5 _can_do_for_you (iedere _ staat voor een spatie in het eindresultaat). Je krijgt dan in het kort: 1not2345;12354 wat nog slechts 14 tekens zijn: slechts 58 byte. Dat is dus een winst van 21 bytes of bijna 27% compacter.

Lossless
Tip 02 Een simpel voorbeeld van verliesloze compressie met ‘slim’ woordenboek(je).
Het algoritme bepaalt in grote mate de efficiëntie van de datacompressie

Tip 03: Criteria

Uit tip 02 kun je afleiden dat het gebruikte compressie-algoritme (en het woordenboek) grotendeels mee bepalen hoe sterk een bestand zich laat comprimeren. Maar dat is niet alles: ook het datatype speelt een rol.

Probeer maar eens mediabestanden als avi, jpg of mp3 te comprimeren: dat levert doorgaans weinig op doordat ze zelf al met (lossy) compressie zijn opgebouwd (zie ook tips 08 en 09). Bepaalde documenttypes, zoals pdf en MS Office-documenten, laten zich evenmin goed comprimeren, doordat ze eveneens al compressie hebben toegepast.

Komt daarbij dat het ene algoritme bepaalde datatypes vaak heel sterk weet te comprimeren, maar bij andere types beduidend slechter scoort. Dat alles maakt de keuze van ‘de optimale compressietool’ er niet makkelijker op.

Bovendien is de behaalde compressiegraad niet alleenzaligmakend. Voor wie frequent data comprimeert en ook weer uitpakt, zal immers ook de decompressiesnelheid van belang zijn en in de praktijk blijkt de ene tool vaak veel sneller of trager dan de andere. Een blik op de testresultaten maakt dat meteen duidelijk.

Compressietijd
Tip 03 In deze test staat Bandizip bovenaan als snelste inpakker. Het uitpakken vergt vaak wat meer adem …

Tip 04: Windows (zip)

In tips 05 tot 07 stellen we je een paar degelijke en gratis compressietools voor, maar wat heeft Windows zelf in huis? Spoiler: veel stelt het niet voor, maar het volstaat wellicht voor wie sporadisch bestanden wil in- of uitpakken.

Open de Verkenner en selecteer enkele bestanden en/of mappen. Klik met rechts op je selectie en kies Kopiëren naar / Gecomprimeerde (gezipte) map. Het resultaat van deze actie is een zip-bestand, met de naam van het aangeklikte item.

Om dit zip-archief weer uit te pakken hoef je er maar op te dubbelklikken, waarna je bovenaan selecteert en een doelmap opgeeft.

Dat is het. Het belangrijkste voordeel hiervan is dat je geen externe tool hoeft te downloaden of op te starten en dat elke ontvanger wel raad weet met zo’n universeel zip-bestand. Aan deze eenvoud kleeft echter ook een nadeel: je kunt nauwelijks opties instellen ter optimalisatie.

Windows zip
Tip 04 De ingebouwde (un)zipper in Windows: makkelijk, maar optieloos.

Tip 05: Externe tools

Voor wie zich afvraagt welke zinvolle opties een compressie- of archiveringstool zoal kan aanbieden: wat dacht je er bijvoorbeeld van om zelf de optimale compressiegraad in te stellen, het compressie-algoritme en -formaat te kiezen dat voor jouw data het snelste werkt en/of de meest compacte resultaten neerzet, je archiefbestand met een wachtwoord te vergrendelen, het archief automatisch uit te splitsen zodra een instelbare maximumgrootte is bereikt, of een zelfuitpakkend archief te creëren zodat de ontvanger niet over de bijhorende (de)compressietool hoeft de beschikken? Dergelijke opties kunnen best nuttig zijn als je regelmatig data in- en uitpakt.

Lijkt je dat inderdaad iets, dan zit er weinig anders op dan naar externe alternatieven uit te kijken. Degelijke, populaire en gratis tools, die (ook) binnen Windows functioneren, zijn Bandizip (Windows en macOS), PeaZip (Windows en Linux) en 7-Zip (Windows).

Bandizip blijkt doorgaans de snelste bij het inpakken, terwijl 7-Zip sterk presteert wat compressiegraad betreft, althans in het 7z-formaat. We bekijken deze laatste tool even van naderbij.

Peazip
Tip 05 PeaZip, van vele (archiverings)markten thuis!

Tip 06: 7-Zip (basis)

7-Zip installeer je met een enkele muisklik, waarna je 7-Zip File Manager terugvindt in de programmalijst. Via Tools / Options / Language kun je de Nederlandse taal instellen voor de interface. En een vinkje bij Extra / Opties / 7-Zip / 7-Zip in het contextmenu integreren zorgt ervoor dat de belangrijkste commando’s voortaan ook vanuit de Verkenner beschikbaar zijn.

Start je Verkenner en rechtsklik op een bestandsselectie. Je merkt nu de optie 7-Zip op, met acties als Toevoegen aan <…>.zip en Toevoegen aan <…>.7z. Die zorgen voor een gecomprimeerd bestand, respectievelijk in zip- en 7z-formaat. Dit laatste levert weliswaar compactere archieven op, maar het inpakken duurt langer én de beoogde ontvangers moeten hiermee ook overweg kunnen.

Om een archiefbestand uit te pakken selecteer je het in de Verkenner en kies je in het contextmenu 7-Zip / Uitpakken (hier) of Uitpakken naar als je zelf het bestemmingspad wilt opgeven.

7-zip
(Ook) 7-zip integreert mooi in het contextmenu van de Verkenner.

Tip 07: 7-Zip (extra)

Een andere optie in dit contextmenu is Toevoegen aan archief. Die voert je naar een programmavenster met allerlei aanpasbare instellingen, zoals het Archief formaat, met keuze uit onder meer 7z, tar en zip, of het gewenste Compressieniveau, met opties als Opslaan (geen compressie), Snel, Normaal en Ultra (maximale compressie).

Handig is ook nog SFX archief maken, beschikbaar bij 7z: de tool creëert dan een zelfuitpakkend exe-archief. Kies je 7z of zip dan kun je je archiefbestand met een wachtwoord vergrendelen. Een groot archiefbestand opsplitsen in deelbestanden kan via de optie Opsplitsen in volumes.

Andere instellingen, zoals Compressiemethode en Woordenboekgrootte zijn eveneens beschikbaar, maar die zijn behoorlijk geavanceerd en laten we in onze introductie buiten beschouwing. Het staat je natuurlijk vrij hiermee zelf te experimenteren.

7-zip instellingen
Het instellingenvenster van 7-Zip biedt flink wat (geavanceerde) opties aan.

Tip 08: Codecs

We zeiden het al: mediabestanden laten zich doorgaans lastig comprimeren doordat de meeste al gecomprimeerd zijn. Immers, zonder compressie zou je met reuzengrote bestanden opgescheept zitten en dat is niet handig voor opslag en zeker niet voor streaming. Deze ‘interne’ compressie gebeurt met behulp van zogenoemde codecs, wat staat voor compressie-decompressie (of ook: codering-decodering).

Populaire verliesgevende audiocodecs zijn onder meer mp3, wma, ogg en aac. Er zijn echter ook verliesloze codecs, zoals alac, ape en flac en er zijn zelfs ‘codecs’ die helemaal niet comprimeren, zoals pcm in wav-bestanden.

Bij videobestanden tref je gelijksoortige technieken aan. Een uitgebreid overzicht van zowel verliesgevende als verliesloze codes vind je bijvoorbeeld hier.

Codecs zijn dus handig, maar je mediaspeler moet er wel mee overweg kunnen. Een veelzijdige speler is de gratis VLC media player die standaard en hele reeks codecs aan boord heeft, veel meer dan bijvoorbeeld Windows Media Player.

Wil je weten met welke codecs een mediabestand precies is opgebouwd, download dan MediaInfo. Na de uitvoering plaats je bij voorkeur een vinkje bij Shell-extensie […], waarna de optie MediaInfo beschikbaar komt wanneer je een mediabestand met rechts aanklikt in de Verkenner. Je krijgt nu detailinformatie over de gebruikte codecs te zien.

Tip 09: Psycho-akoestiek

Het gaat hier meestal om verliesgevende compressie, wat inhoudt dat er informatie wordt weggelaten, met een zeker kwaliteitsverlies tot gevolg. Om dat zo weinig mogelijk opvallend te maken laten codecs meestal de frequenties weg die het menselijke oor toch niet kan opvangen. Psycho-akoestiek heet dat, en hier vind je een audiotest die dat mooi illustreert, met geluid tussen 20 Hz en 20 KHz. Daarbij komt nog dat geluiden met hoge frequenties, vanaf circa 15 KHz, vaak moeilijk te horen zijn indien vergezeld van luidere geluiden met een lagere frequentie. In dit geval passen codecs vaak ‘maskering’ toe en laten ze het geluid met de hoge frequenties weg.

Kijk – en luister – zeker ook even hier. Deze pagina bevat de testresultaten van een studie met onder andere een audiosample van Suzanne Vega’s ‘Tom’s Diner’ (example 8). Dit bevat de geluiden die door een mp3-bestand op 128 kbps werden weggefilterd uit het ongecomprimeerde origineel (example 6).

Akoestiek
Ongecomprimeerd (boven), mp3 (midden), weggelaten geluiden (onder).
Psycho-akoestiek: een slimme manier van verliesgevende compressie

Tip 10: HandBrake

Zoals gezegd moet je mediaspeler met de codecs van je mediabestanden overweg kunnen. Soms kan een firmware-update helpen, soms brengt een extra ‘codecpack’ soelaas, zoals het pack K-Lite.

Brengt dat allemaal niets op dan zit er weinig anders op dan te transcoderen. Anders gezegd: andere codecs gebruiken en/of omzetten naar een ander formaat, met een andere bestandsextensie.

Een van de betere – maar helaas niet de snelste – gratis videotranscoders is HandBrake (64 bit Windows, macOS en Linux).

Bij het opstarten kies je voor een Folder of een enkele File. Er zijn talrijke ‘presets’ beschikbaar, maar alle parameters zelf instellen kan ook. Op het tabblad Summary stel je het Format (MKV of MP4) in, waarna je op het tabblad Video en Audio de codecs aanduidt. Er kunnen nu extra opties opduiken als Framerate( FPS), Quality en Avg bitrate. Houd de muisaanwijzer boven een optie voor meer feedback. Met Preview / Live Preview bekijk je het voorlopige resultaat van de transcodering. Ten slotte leg je via Browse het doelpad vast en start je de effectieve transcodering met Start Encode.

Handbrake
HandBrake heeft heel wat opties in huis voor de meer gevorderde ‘transcoder’.

Tip 11: VSDC

Naast videotranscoders zijn er natuurlijk ook audiotranscoders. Een van de betere gratis tools is VSDC Free Audio Converter (let er wel op geen ongewenste extra’s mee te laten installeren).

Haal alle gewenste audiobestanden op, leg het doelpad vast en geef het beoogde audioformaat aan: aac, aiff, amr, au, m4a, mp3, ogg, wma of wav. Er komen nu diverse profielen (‘presets’) beschikbaar met kwaliteitsaanduidingen als Highest, Normal en Least. Maar je kunt ook eigen profielen toevoegen via Edit profiles en daar allerlei opties finetunen, zoals Audio bitrate, Frequency en Channels.

Met de knop Convert files start je de transcodering.

VSDC
VSDC Audio Converter is zowel geschikt voor beginners als gevorderde audiofielen.

2 Reactie(s) op: Zo kun je bestanden en media comprimeren

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • 23 februari 2020 11:52 chrislaarman
    Bedankt. :-)
    Maar…

    Ik heb de indruk, dat hier twee vormen van compressie verward worden (en anders komt het verschil niet zo uit de verf).

    ZIP, RAR, en dergelijke werken "op de buitenkant" van bestanden. Je kunt ze gebruiken om een groepje bestanden bijeen te houden. De bestanden van Microsoft Office zijn dergelijke bundeltjes: een .XLSX bestand bevat een .XLS bestand en meer. (Ik heb ooit zo'n bestand, beschadigd onderweg naar de cloud, kunnen bekijken door het te hernoemen naar .ZIP.)
    Dergelijke algoritmen zijn uiteraard niet lossy. Je wilt niet, dat een aanhef "geachte heer" verandert in "hoi", of dat "met vriendelijke groet" opeens ingekort blijft tot "mvg".

    Algoritmen zoals die in .JPG en .MP3 werken "op de binnenkant" van bestanden, bij mijn weten uitsluitend bestanden van type "bitmap". Overdreven gezegd wordt dan een reeks beeldpunten "wijnrood, wijnrood, tomaatrood, wijnrood" opgeslagen als "4 wijnrood" (en dus ook weergegeven als "wijnrood, wijnrood, wijnrood, wijnrood"). Een reeks "tomaatrood, tomaatrood, wijnrood, tomaatrood" wordt dan "4 tomaatrood", en bij hogere compressie wordt elk voorbeeld opgeslagen als "4 rood". (De nuance van een "dictionary" laat ik achterwege.)

    Aansluitend bij "psycho-akoestiek":
    Nee, eerst over beeldmateriaal: dat is duidelijk. Fotografeer een landschap, en laat de camera (app of toestel) die foto opslaan als zowel .JPG als .RAW bestand. Bekijk beide bestanden, en let vooral op de lucht: de nuances in wolken. Vind je die nuances belangrijk, dan heb je veel opslagruimte nodig. (Op foto's mèt nuances kun je trouwens mooi ver inzoomen.) Soms is de nuance juist ongewenst: voor tekstherkenning wil je zwart-wit.
    Bij geluid ligt het anders. Bitmap-geluid is de neerslag van golfvormen, waarschijnlijk verschillende golven over elkaar heen. Hoe vaker je meet, hoe nauwkeuriger de golven beschreven worden, en hoe kleiner de kans dat golven onbeschreven blijven. (Stel je voor, dat je bankrekening maandelijks gepeild wordt, net vóór of net na betaaldag, en dat de service-kosten afhankelijk zijn van die peilingen.) Soms maakt het veel verschil, soms niet - dat hangt af van de soort muziek (het aantal "stemmen", en bij een symfonie-orkest zijn dat er tientallen) en van de nauwkeurigheid die je erin wilt houden. (Horen hoe een gitarist zijn vingers over de snaren verplaatst doet waarschijnlijk niet terzake in een carnavals-meezinger.)

    Al met al wil je soms de nuance, soms is dat onverschillig, en soms wil je de nuance juist niet. Maar wat niet opgeslagen is, kun je niet terughalen. Daarvan moet je je bewust zijn.
    Wanneer je een reactie plaatst ga je akoord
    met onze voorwaarden voor reacties.
  • 26 februari 2020 17:04 merlin_thegreat
    Misschien best even de geschreven teksten nakijken alvorens tot publicatie over te gaan. In tip 2 staat het verschil tussen 79 tekens en 36 tekens aangegeven als zijnde 5. Lijkt mij toch eerder een verschil van 43 te zijn.
    Wanneer je een reactie plaatst ga je akoord
    met onze voorwaarden voor reacties.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.