Hoe werkt MP3? Het korte antwoord
MP3 is een lossy codec. De encoder knipt audio in frames van 1.152 samples, verdeelt elk frame in frequentiebanden en gebruikt een model van het menselijk gehoor om geluiden te vinden die door luidere geluiden worden verborgen. Die slaat hij op met weinig of geen bits, en de rest wordt verpakt met Huffman-codering. De speler bouwt het geluid uit die data weer op. Cd-audio loopt op 1.411 kbps (44.100 × 16 bits × 2 kanalen), dus een MP3 van 128 kbps is ongeveer 11 keer kleiner.
Wat gebeurt er als je een MP3 maakt?
Wanneer een WAV- of M4A-bestand wordt omgezet naar MP3, voert de encoder een reeks stappen achtereenvolgens uit. De invoer bestaat uit ruwe PCM-audio — ongecomprimeerde samples die luchtdruk over tijd weergeven. De uitvoer is een stroom gecomprimeerde frames, elk van een paar milliseconden audio.
De pipeline werkt als volgt:
- Windowing: de audio wordt opgesplitst in overlappende frames van 1.152 samples (ongeveer 26 ms bij 44,1 kHz)
- Frequentieanalyse: elk frame gaat door een polyfase-filterbank met 32 banden en daarna door een Modified Discrete Cosine Transform (MDCT), die tijdsamples omzetten in frequentiewaarden
- Psychoakoestische analyse: de encoder berekent welke frequenties in dit frame gemaskeerd (onhoorbaar) zijn
- Kwantisatie: gemaskeerde frequenties worden verwijderd of krijgen minder bits; hoorbare frequenties krijgen meer bits
- Huffman-codering: de gekwantiseerde data wordt verliesvrij gecomprimeerd via entropiecodering
- Bitstroom-assemblage: frameheader, zijdelingse informatie en gecodeerde audiodata worden samengebundeld in de uitvoer
Het resultaat: een 44,1 kHz, 16-bit stereo WAV van 1.411 kbps wordt een 320 kbps MP3 — bijna 80% kleiner — terwijl het vrijwel identiek klinkt.
Het psychoakoestisch model
Het psychoakoestisch model vormt de kern van MP3-compressie. Het is een wiskundig model van hoe het menselijk gehoor werkt, en het bepaalt wat de encoder veilig kan verwijderen. Het model maakt gebruik van drie soorten maskering:
Simultane (frequentie)maskering
Een hard geluid op één frequentie maakt nabijgelegen zachtere geluiden onhoorbaar. Een luid bekkencijmbal op 8 kHz maskeert bijvoorbeeld een zachte gitaarboventoon op 9 kHz. De encoder detecteert deze gemaskeerde frequenties en kent ze minder bits toe (of nul bits). Je zou ze toch niet horen.
Temporele maskering
Maskering werkt ook in de tijd. Een hard geluid maskeert zachtere geluiden die er net vóór voorkomen (pre-maskering, ongeveer 5 ms) en net erna (post-maskering, ongeveer 50–100 ms). De encoder gebruikt dit om data te verminderen tijdens overgangen tussen luide en stille passages.
Absolute gehoordrempel
Menselijke oren zijn niet even gevoelig voor alle frequenties. We horen 1–5 kHz het beste en zijn veel minder gevoelig onder 100 Hz en boven 16 kHz. De encoder verwijdert alle audio onder de absolute gehoordrempel — geluiden die zo zacht zijn dat geen mens ze kan horen, ongeacht andere geluiden.
Kernpunt: MP3 "gooit niet zomaar data weg." Het gebruikt een geavanceerd model van het menselijk gehoor om uitsluitend audio te identificeren en te verwijderen die je niet kunt waarnemen. Daarom klinkt een 320 kbps MP3 voor de meeste luisteraars in blindtests niet te onderscheiden van het origineel.
Hoe bitrate samenhangt met kwaliteit
Bitrate is het aantal kilobits dat de encoder per seconde mag gebruiken. Meer bits betekenen minder compromissen:
| Bitrate | Wat wordt verwijderd | Hoorbaar resultaat |
|---|---|---|
| 320 kbps | Alleen werkelijk onhoorbare inhoud | Transparant — niet te onderscheiden van origineel |
| 256 kbps | Onhoorbare + grensgevallen | Transparant voor de meeste luisteraars |
| 192 kbps | Enige gedeeltelijk hoorbare inhoud | Goede kwaliteit; artefacten zeldzaam op consumentenapparatuur |
| 128 kbps | Merkbare compromissen | Acceptabel voor casual luisteren; geoefende oren horen verlies |
| 64 kbps | Agressieve ingrepen over alle frequenties | Duidelijke artefacten; alleen geschikt voor spraak |
De relatie is niet lineair. De stap van 128 naar 192 kbps is een enorme kwaliteitssprong. De stap van 256 naar 320 kbps is nauwelijks merkbaar. Dit komt doordat het psychoakoestisch model de meest hoorbare inhoud als eerste prioriteit geeft — de laatste bits die bij hoge bitrates worden bespaard, zijn het minst opvallend. Wil je een bitrate kiezen voor je eigen bestanden, lees dan onze gids met de beste MP3-kwaliteitsinstellingen voor muziek, podcasts en luisterboeken.
Een korte geschiedenis van MP3
MP3 — officieel MPEG-1 Audio Layer III — werd ontwikkeld aan het Fraunhofer Instituut in Duitsland, voornamelijk door Karlheinz Brandenburg. De standaard werd in 1993 gepubliceerd als ISO 11172-3.
Het formaat kende enkele mijlpalen:
- 1993: ISO 11172-3 gepubliceerd. MP3 bestaat als standaard maar heeft nog geen goede encoders
- 1995: Fraunhofer kiest de bestandsextensie .mp3 en brengt WinPlay3 uit, een vroege realtime MP3-speler voor Windows
- 1998: LAME-project begint als "LAME Ain't an MP3 Encoder" — een patch om de referentie-encoder te verbeteren
- 1999: Napster lanceert. MP3 wordt wereldwijd het dominante muziekformaat
- 2003: iTunes Store lanceert en verkoopt AAC-bestanden (de beoogde opvolger van MP3)
- 2017: Alle MP3-patenten vervallen. Het formaat is volledig vrij te gebruiken zonder licentie
Ondanks dat AAC en Opus technisch superieur zijn, blijft MP3 het meest ondersteunde audioformaat ter wereld. Elk apparaat, elke speler, elk besturingssysteem ondersteunt MP3.
Waarom LAME de beste MP3-encoder is
LAME (LAME Ain't an MP3 Encoder) is een open-source MP3-encoder die sinds 1998 continu wordt verfijnd. Het is de encoder die in FFmpeg wordt gebruikt als libmp3lame, en het is wat CleverUtils gebruikt voor elke MP3-conversie.
Wat LAME bijzonder maakt:
- 25+ jaar optimalisatie. Het psychoakoestisch model, de kwantisatie en de VBR-afstemming zijn verfijnd via duizenden luistertests en codeverbeteringen.
- VBR-kwaliteitsniveaus. LAME's VBR-presets V0 t/m V9 kennen per frame dynamisch bitrate toe. V0 (hoogste, ~245 kbps gemiddeld) t/m V9 (laagste, ~65 kbps gemiddeld) dekken elk kwaliteitsdoel.
- Automatische joint stereo. LAME analyseert elk frame en schakelt automatisch tussen mid/side-stereo en volledige stereo-codering, afhankelijk van wat efficiënter is. Daarom levert de standaardmodus optimale resultaten.
- Info voor gapless afspelen. LAME schrijft encodervertraging en opvullingsinformatie in de MP3, waardoor naadloze trackovergangen mogelijk zijn op spelers die dat ondersteunen.
Onze backend: CleverUtils gebruikt FFmpeg met libmp3lame. Wanneer je VBR selecteert, gebruikt het commando -q:a met V0, V2, V4 of V6. Wanneer je CBR selecteert, wordt -b:a gebruikt met 128k, 192k, 256k of 320k. Beide doorlopen de volledige psychoakoestische pipeline van LAME. Onze VBR vs CBR-gids legt uit welke van de twee modi het beste bij je bestanden past.
Generatieverlies: waarom her-encoderen slecht is
Elke keer dat je audio naar een lossy formaat codeert, neemt de encoder beslissingen over wat hij weggooien. Als je een MP3 opnieuw naar MP3 codeert, verwijdert de tweede encoder extra data — inclusief data die de eerste encoder belangrijk genoeg vond om te bewaren.
Dit heet generatieverlies, en het is cumulatief:
- 1e codering: originele kwaliteit (onhoorbare inhoud verwijderd)
- 2e codering: lichte degradatie (grensgevallen verwijderd die in pass 1 bewaard waren)
- Enkele coderingen later: merkbare artefacten in complexe passages
- Veel coderingen later: duidelijk hoorbaar trillend geluid, frequentieverlies, stereo-ineenstorting
De praktische regel: codeer altijd vanuit de originele verliesloze bron (WAV, FLAC of ALAC). Als je een andere bitrate nodig hebt, ga je terug naar het origineel en codeer je opnieuw — codeer nooit een bestaande MP3 opnieuw. Dit geldt ook voor M4A (AAC)-bronnen: converteer eenmalig naar MP3, converteer het resultaat niet nogmaals.
Veelgemaakte fout: Een 128 kbps MP3 converteren naar 320 kbps verbetert de kwaliteit niet. De ontbrekende data van de 128 kbps-codering is permanent verloren. Je krijgt alleen een groter bestand met dezelfde (of iets slechtere) kwaliteit door een tweede coderingsstap.
Binnen in een MP3-bestand: frames, headers en tags
| Onderdeel | Grootte | Wat het bevat |
|---|---|---|
| ID3v2-tag | Variabel, aan het begin | Titel, artiest, album, albumhoes, songtekst |
| Xing/LAME-header | Eerste frame | Aantal frames en bytes om te zoeken in VBR-bestanden; encodervertraging en opvulling voor gapless afspelen |
| Frameheader | 4 bytes per frame | Syncwoord, MPEG-versie, bitrate, samplefrequentie, kanaalmodus |
| Zijdelingse informatie | 17 bytes (mono) of 32 bytes (stereo) | Hoe de bits van het frame over granules en kanalen zijn verdeeld |
| Hoofddata | Rest van het frame | Huffman-gecodeerde frequentiewaarden |
| ID3v1-tag | 128 bytes, aan het eind | Verouderde velden voor titel, artiest, album, jaar en genre |
Een frame van 128 kbps bij 44,1 kHz is ongeveer 418 bytes: 144 × 128.000 ÷ 44.100 = 417,96.