MP3-Grundlagen: Aufbau und Funktion

14.12.2000 von Malte Jeschke
Von der Theorie der Psychoakustik, die der Audiokompression zu Grunde liegt, bis zur fertigen MP3-Datei ist es weiter und komplexer Weg. Ein Blick hinter die Kulissen von MP3 zeigt die Details.

Ganz neu ist die Idee der Komprimierung von Audiodaten nicht. Bereits seit über 20 Jahren wird an Kompressionsalgorithmen für Audiosignale gearbeitet. Der Idee lag der Wunsch zu Grunde, Musik über die Telefonleitung zu übertragen. Damit hat sich die Aufgabenstellung bis heute nicht deutlich verändert, neben der Speicherkapazität ist die Online-Übertragung immer noch einer der Gründe für Audiokompression.

Mit dem Standardformat, in dem Audiodateien vorliegen, ist dies nicht zu bewerkstelligen. Dazu sollte man sich veranschaulichen, welche Datenrate für die Wiedergabe von Audiodateien erforderlich ist. Üblicherweise gelten für unkomprimierte Audiodateien auf einer Audio-CD folgende Eckwerte: eine Samplefrequenz von 44,1 KHz sowie eine Auflösung von 16 Bit sowie Stereo.

Prinzipiell heißt dies nichts anderes, als das die Abtastung eines Signals 44.100 Mal pro Sekunde erfolgt, das Ergebnis jeder Messung einen 16-Bit-Wert ergibt und das Ganze mal zwei Kanäle (Stereo) passiert. Hieraus ergibt sich eine Bitrate von 1,4 MBit/Sekunde für ein Stereo-Audiosignal. Zum Vergleich: Bei MP3 genügt eine Datenrate von 128 KBit/s zur Übertragung von Musik in annähernd CD-Qualität. Auch die Speicherkapazität ist nicht zu vernachlässigen: Auf einer Audio-CD kommen rund 10 MByte auf eine Minute Musik, MP3-Dateien in guter Qualität geben sich mit zirka einem Zehntel dessen zufrieden. Sprich: Mit MP3 lassen sich rund 10 Stunden Musik auf einer CD unterbringen. Um eine so hohe Kompressionsrate ohne signifikante Qualitätsverluste zu erreichen, ist eine komplexe Bearbeitung des Audiosignals erforderlich.

Sprich: Mit MP3 lassen sich rund 10 Stunden Musik auf einer CD unterbringen. Um eine so hohe Kompressionsrate ohne signifikante Qualitätsverluste zu erreichen, ist eine komplexe Bearbeitung des Audiosignals erforderlich.

MPEG Layer 1 bis 3

Wer MP3 sagt, meint genau genommen MPEG-Layer-3. Dem vorangegangen sind bereits Layer 1 und 2, die in den Kompressionsraten jedoch keineswegs das Ergebnis von Layer 3 erreichen. Alle drei Codecs sind abwärtskompatibel, sprich ein Layer-3-Decoder spielt auch Dateien ab, die nach Layer 1 oder 2 kodiert sind. Der Tabelle des Fraunhofer Instituts können Sie entnehmen, welche Kompressionsraten MP3 bei welchen Bitraten erreicht. Das Fraunhofer Institut für Integrierte Schaltungen spricht bereits bei einer Datenrate von 112 bis 128 KBit/s von CD-Qualität. Dies ist subjektiv empfunden nicht immer nachvollziehbar. Auch hier kann man bestenfalls von annähernder CD-Güte sprechen. Der Eindruck wirklicher CD-Qualität vermittelt nach unseren Erfahrungen erst eine Datenrate von 160 KBit/s. Vergleicht man dies mit MPEG-Layer-1 und -2, ist dennoch der Fortschritt im Algorithmus erkennbar. Der bereits bei der digitalen Compact Cassette verwendete Layer 1 benötigte immerhin 384 KBit/s für ein Stereosignal in annähernder CD-Qualität. Beim im DAB eingesetzten Layer 2 sind es noch 256 KBit/s. In diesem Bereich ist die Layer-2-Kompression auch unter der Bezeichnung MUSICAM bekannt.

Für alle drei Layer gilt, dass die Codierung stark asymmetrisch ist. Dies bedeutet: der Aufwand ist beim MP3-Encoder deutlich höher als beim MP3-Decoder. Da alle während des Kodierens errechneten Werte in der MP3-Datei abgespeichert werden, beschränkt sich die Arbeit des Decoders auf die Interpretation dieser Werte. Gemeinsam ist allen drei Layern die Unterstützung folgender Sampleraten: 32, 44,1 oder 48 kHz.

Die vorbereitenden Maßnahmen vor der eigentlichen Kodierung sind bei allen Layern identisch.

Die Qualitätsstufen von MP3 im Überblick

Klangqualität

Modus

Bitrate

Kompressionsrate

Angaben gemäß Fraunhofer Institut

Telefon

mono

8 KBit/s

96:1

besser als KW-Radio

mono

16 KBit/s

48:1

besser als MW-Radio

mono

32 KBit/s

24:1

ähnlich UKW-Radio

stereo

56 bis 64 KBit/s

26 bis 24:1

annähernd CD

stereo

96 KBit/s

16:1

CD-Qualität

stereo

112 bis 128 KBit/s

14 bis 12:1

Teilung des Audiosignals

Bei der MPEG-Audiokodierung überführt eine Filterbank das zu kodierende Audiosignal vom Zeit- in den Frequenzbereich. Während dieses Vorgangs wird es zunächst in 32 Frequenzbänder (Subbands) unterteilt. Bis zum Layer 2 hatten alle 32 Subbänder die gleiche Größe von 625 Hz. Seit dem Layer 3 sind die Subbänder an die Eigenschaften des menschlichen Gehörs angepasst. Hierfür sorgt ein polyphaser Filter, sprich es geschieht eine gleichzeitige Dezimierung und Filterung der Abtastwerte. Jedes Subband repräsentiert dabei einen bestimmten Ausschnitt des Frequenzspektrums.

Das in Bänder zerlegte Audiosignal bietet dem Algorithmus deutlich mehr Angriffsfläche, als das uniforme Audiosignal. Der MP3-Encoder knöpft sich jedes Subband einzeln vor und untersucht es gemäß dem Psychoakustischen Modell auf verzichtbare Frequenzen. Hierbei erfolgt eine Ermittlung der Maskierungsschwelle. Im ersten Schritt fallen die Subbänder weg, deren Pegel unterhalb dieser Verdeckungsfunktion liegt. Jedes Subband erfährt nun eine Abtastung, deren Resultat 16-Bit-große Samples sind.

Bei der Quantisierung dieser Samples entsteht der nächste Ansatzpunkt zur Datenreduktion. Jedes Sample besteht zwar aus 16 Bit, jedoch sind nicht unbedingt alle 16 nötig, um den Pegel darzustellen. So können beispielsweise die führenden Nullen eines 16-Bit-Samples entfallen. Ergibt sich bei einem Sample der Wert 0000011101010101, so stutzt der Algorithmus das Ergebnis auf 11101010101.

Um aus diesen reduzierten Angaben wieder die originalen 16 Bit rekonstruieren zu können, benötigt der Decoder zwei Angaben: den Skalierungsfaktor sowie die Bit Allocation. Der Skalierungsfaktor gibt an, an welcher Stelle die verbliebenen Bits des Samples sich im ursprünglichen Zustand befunden haben. Die Bit Allocation enthält die Information, wie viele Bits im Sample verblieben sind, da man ja nicht mehr mit einer festen Zahl von 16 Bit rechnen kann. Würde man nun diese Informationen für jedes Sample einzeln ablegen, wäre nicht viel gewonnen. Daher teilen sich je zwölf Samples diese Werte.

Kompression Layer 3

Bereits Layer 1 und 2 unterteilten in Subbänder, Layer 3 geht jedoch einen Schritt weiter. Veranschaulicht an einem Sinuston von 1500 Hz lässt sich erkennen, dass hierbei zwei Subbänder Werte aufweisen. Hier zeigt sich ein Nachteil der Filterbank, die 32 Subbänder überlappen sich, wodurch ein Ton einer festen Frequenz zwei Bänder beeinflussen kann. Man spricht hier vom so genannten "Aliasing"-Effekt.

Um diese Folgen der Filterbank zu beseitigen und die Spektralauflösung zu erhöhen, erfolgt beim Layer 3 eine modifizierte diskrete Cosinus-Transformation, die sich um die Zeit-/Frequenztransformation kümmert.

Geht es um die Bearbeitung von Sound, lassen sich grundsätzlich zwei Perspektiven unterscheiden. Entweder das Audiosignal wird als eine Serie von Samples betrachtet, die einem analogen Signal entsprechen. Oder die Unterscheidung erfolgt nicht über die Zeit, sondern über die Frequenzen. Je nach Art der gewünschten Manipulation eignet sich die eine oder andere Perspektive besser. Das Mischen von Signalen oder das Erhöhen der Amplitude geschieht leichter in einer zeitorientierten Basis. Frequenzmanipulationen fallen naturgemäß bei der nach Frequenzen aufgeschlüsselten Sichtweise leichter.

Um die Daten von einer in die andere Perspektive zu konvertieren, bedient man sich der Fourier-Transformation. Um ein Optimum zwischen Zeit- und Frequenzunterscheidung zu erreichen, bildet Layer 3 zwei verschiedene Blocklängen: eine lange mit 36 Samples und eine kurze mit zwölf Samples. In der Praxis heißt dies: Bei den die niedrigen Frequenzen kommen lange Blöcke zum Einsatz. Die langen Blöcke würden jedoch bei höheren Frequenzen keine ausreichende Auflösung erlauben, hier finden die kurzen Blöcke Verwendung. Im so genannten Mixed Block Mode kommen für die beiden Frequenzbänder mit den niedrigsten Frequenzen lange Blöcke zum Einsatz. Für die 30 verbliebenen Frequenzbänder sind die kurzen Blöcke an der Reihe. Damit erlaubt dieser Modus eine bessere Frequenauflösung bei den niedrigen Frequenzen, ohne eine Tribut an die Abtastrate bei den hohen Frequenzen zu zahlen.

Huffmann-Kodierung

Als letzter Schritt der Komprimierung erfolgt beim Layer III eine Huffman-Kodierung. Dieser Algorithmus kommt beispielsweise auch bei Packprogrammen wie ZIP zum Einsatz. Bei Huffman ist die Häufigkeit bestimmter Werte entscheidend. Häufig auftauchende Werte erhalten eine kurze Bitfolge, selten auftretende Werte hingegen eine Lange. Daher ermittelt der Algorithmus zunächst die Verteilung der Werte innerhalb der zu komprimierenden Daten.

Um einen sogenannten Huffman-Baum zu ermitteln, beginnt man mit den beiden seltensten Werten. Ihnen wird eine "0" beziehungsweise eine "1" zugewiesen. Es erfolgt eine Zusammenfassung der beiden Werte, in der Reihenfolge sind sie nun durch die Summe ihrer Häufigkeit repräsentiert. Das gleiche geschieht mit den nächsten beiden seltensten Werten. Dieser Vorgang ist beendet, wenn nur noch ein Wert übrig ist. Das Ergebnis dieser Vorgehensweise ist eine Baumstruktur. Anhand dieser Struktur erfolgt die Kodierung. Jede Verzweigung nach links erhält eine 0, jede Rechtsverzweigung ist durch eine "1" gekennzeichnet. In unserem kleinen Beispiel wäre der weniger häufige Wert 4 durch die Bitfolge 010 repräsentiert. Der häufigste Wert 6 bekommt dagegen eine schlichte 1 zugeordnet.

Vor der Huffman-Kodierung steht die Anordnung der Subbänder. Die Frequenz gibt die Reihenfolge der Bänder vor. Die Subbänder mit niedrigeren Frequenzen enthalten üblicherweise deutlich mehr Werte, als diejenigen der hohen Frequenzen, wo in der Regel 0 oder Werte in der Nähe von 0 erscheinen. Der Encoder unterteilt die Subbänder in drei Bereiche. Jeder Bereich erhält einen eigenen Huffman-Baum, um den optimalen Kompressionsfaktor zu erreichen.

Zunächst klammert der Encoder die Frequenzbänder mit den hohen Frequenzen aus, eine Kodierung ist hier nicht notwendig, da sich ihre Größe aus denen der anderen zwei Regionen ableiten lässt. Die zweite Region enthält Frequenzbänder, in denen die Werte von -1 bis 1 häufig auftauchen. Der dritte Bereich enthält alle verbleibenden Werte und wird ein weiteres Mal in drei Regionen unterteilt, von denen jede einen eigenen Huffman-Baum zugewiesen bekommt. Welcher Huffman-Baum zum Einsatz kommt, wird innerhalb der MP3-Datei abgelegt.

Aufbau Layer-3-Bitstream

Nach der Aufsplittung des Audiosignals und der bisherigen Codierung, wird das Ergebnis in so genannten Frames zusammengefasst. Jedes Frame enthält eine feste Anzahl von Abtastwerten (Samples). Bei Level 3 sind dies 1152 Abtastwerte pro Frame (32 Subbänder x 36 Samples). Ein Frame besteht aus einem Header, einem Prüfsummencheck, den eigentlichen Audiodaten sowie unter Umständen einem so genannten Bit-Reservoir. Ein solches Reservoir entsteht, wenn sich die Samples innerhalb des Frames so komprimieren lassen, dass nicht die komplette theoretische Bit-Anzahl eines Frames benötigt wird.

Auf diese Reservoirs kann der Encoder zurückgreifen, wenn bei einem späteren Frame die vorhandenen Bits nicht ausreichen. Hierbei muss man zwei Begriffe unterscheiden: Framegröße und Framelänge.

Die Framegröße wird durch die Anzahl der Samples bestimmt und ist innerhalb eines Layers konstant. Im Format Layer 1 sind dies stets 384 Samples pro Frame, bei Layer 2 und 3 kommen 1152 auf ein Frame. Die Länge des Frames kann sich jedoch bei Layer 3 durch das Wechseln der Bitrate oder das nicht aufgefüllte Bit-Reservoir unterscheiden. Vor Layer 3 existierte die Möglichkeit eines Bit-Reservoirs nicht. Theoretisch ist auch eine zerstückelte MPEG-Sounddatei abspielbar. Dies gilt jedoch nicht für nach Layer 3 kodierte Dateien, da hier die Frames auf Grund des Bit-Reservoirs verschachtelt sind. Ebenfalls im Frame enthalten sind die vorher erwähnten Informationen bezüglich des Skalierungsfaktors und der Bit Allocation, um alle Samples wieder rekonstruieren zu können.

Frameheader 1

Jeder Frame enthält einen Header sowie Audiodaten. Ein Datei-Header, wie er von anderen Dateiformaten her bekannt, existiert bei einer MP3-Datei nicht. Der Frame Header belegt die ersten 32 Bit eines Frames. Die ersten 12 Bit des Headers bilden das Frame Sync.

Syncword (12 Bit) ID (1 Bit): Offiziell ist ID-Signatur nur ein Bit groß, um die verwendete MPEG-Version zu kennzeichnen. In der Urfassung steht der Wert 1 für MPEG 1 und der Wert 0 für MPEG 2. Mit dem inoffiziellen Standard MPEG 2.5 reicht ein Bit als Kennung jedoch nicht mehr aus. Anwendungen, die diesen Standard bereits unterstützen, verwenden das zwölfte Bit des Syncwords als zusätzliche MPEG-ID. Ist dieses auf 0 gesetzt, steht dies für MPEG 2.5. Standardmäßig sind alle Bits des Syncwords gesetzt.

Layer (2 Bit): Gibt an, nach welchem Layer die Codierung erfolgt ist.

Wert

Bedeutung

00

reserviert

01

Layer 3

10

Layer 2

11

Layer 1

error protection (1 Bit): Wenn das Error Protection Bit gesetzt ist, folgt nach dem Frameheader eine 16-Bit-CRC-Prüfsumme.

bitrate_index (4 Bit): Hier steht, in welcher Bitrate die Datei codiert wurde.

Wert

MPEG1 Layer I

MPEG1 Layer II

MPEG1 Layer III

0000

frei

frei

frei

0001

32 KBit/s

32 KBit/s

32 KBit/s

0010

64 KBit/s

48 KBit/s

40 KBit/s

0011

96 KBit/s

56 KBit/s

48 KBit/s

0100

128 KBit/s

64 KBit/s

56 KBit/s

0101

160 KBit/s

80 KBit/s

64 KBit/s

0110

192 KBit/s

96 KBit/s

80 KBit/s

0111

224 KBit/s

112 KBit/s

96 KBit/s

1000

256 KBit/s

128 KBit/s

112 KBit/s

1001

288 KBit/s

160 KBit/s

128 KBit/s

1010

320 KBit/s

192 KBit/s

160 KBit/s

1011

352 KBit/s

224 KBit/s

192 KBit/s

1100

384 KBit/s

256 KBit/s

224 KBit/s

1101

416 KBit/s

320 KBit/s

256 KBit/s

1110

448 KBit/s

384 KBit/s

320 KBit/s

1111

reserviert

reserviert

reserviert

sampling_frequency (2 Bit): Hier wird die Sampling Rate in Hz festgelegt. Richtet sich unter anderem nach der in der MPEG-ID festgelegten MPEG-Version.

Wert

MPEG1

MPEG2

MPEG2.5

00

44100

22050

11025

01

48000

24000

12000

10

32000

16000

8000

11

reserviert

reserviert

reserviert

Frameheader 2

padding_bit: Dieses Bit wird dazu benutzt, um die Bitraten exakt zu bestimmen. Ist es auf 0 gesetzt, ist das Frame nicht aufgefüllt.

private_bit (1 Bit): Steht zur freien Verfügung. Beispielsweise um in Applikationen ein bestimmtes Ereignis auszulösen.

mode (2 Bit): Hier erfolgt die Angabe über den Stereomodus. Es wird unterschieden, ob die Datei Stereo, Joint Stereo, Zweikanal oder Mono codiert ist. Folgende Bitfolgen stehen für die entsprechenden Werte:

Wert

Bedeutung

00

Stereo

01

Joint Stereo

10

Zweikanal

11

Mono

mode extension (2 Bit): Ist nur von Bedeutung, wenn bei der Kodierung der Joint-Stereo-Modus gewählt wurde. Während bei Layer 1 und 2 hier die Zuordnung der Frequenzbänder an den Joint-Stereo-Modus erfolgt, gilt für Layer-3-Dateien die Festlegung welcher Joint-Stereo-Modus zum Einsatz kommt (intensity stereo oder M/S-stereo). Beim Layer 3 bestimmt der Dekompressionsalgorithmus die Frequenzbänder.

Wert

intensity stereo

M/S-stereo

00

aus

aus

01

an

aus

10

aus

an

11

an

an

copyright (1 Bit): Ist das Copyright-Bit gesetzt, ist die MP3-Datei urheberrechtlich geschützt.

original/copy (1 Bit): Gibt an, ob es sich um ein Original oder eine Kopie handelt.

emphasis: Hier wird die verwendete Rauschunterdrückung angegeben. Der Einsatz ist allerdings nicht sehr gebräuchlich.

Wert

Rauschunterdrückung

00

keine

01

50/15 ms

10

reserviert

11

CCITT j.17

Der ID3-Tag

Beim ID3-Tag handelt es sich um eine Art Inhaltsangabe der MP3-Datei, ähnlich wie dies CD-Text für Audio-CDs darstellt. So beziehen die MP3-Player (Soft- wie Hardware), die Informationen über das abzuspielende Stück aus dem ID3-Tag. Der ID3-Tag ist 128 Byte groß und steht am Ende einer MP3-Datei.

Länge (Byte)

Beschreibung

3

TAG-Identifizierung, hier muss TAG stehen

30

Titel des Stückes

30

Interpret

30

CD-Titel

4

Erscheinungsjahr

30

Kommentar

1

Genre

Das Genre ist ein nummerisches Feld. Es existiert eine Liste, in der bestimmte Nummern den Genres von Acid Punk bis Southern Rock zugeordnet sind. Mittlerweile wird außerhalb der MP3-Spezifikation der ID3-Tag von unabhängigen Interessensgruppen weiterentwickelt. Da der ID3-Tag immer am Ende der MP3-Datei steht, ist es relativ einfach, ihn auszulesen beziehungsweise zu editieren.

In neueren Varianten des ID3-Tags werden Bytes des Kommentarfelds geopfert, um die Original-Track-Nummerierung der CD ebenfalls speichern zu können. Inzwischen kursieren zahlreiche Sharewareprogramme, die sich der Bearbeitung des ID3-Tags annehmen. Beliebte Funktionen sind dabei die automatische Erzeugung des ID3-Tag aus Verzeichnis- und Dateinamen sowie umgekehrt das Benennen von Dateien auf Grund vorliegender ID3-Tag-Informationen. (mje)