MP3-Grundlagen, Aufbau und Funktion

Ausgangspunkt:
Audio-CD Eckdaten:
44 kHz Samplingfrequenz
16 Bit/Sample
Stereo (2 Kanäle)
=176 kByte/s oder 1,4 MBit/s

MP3 - Details

MPEG Layer 1 bis 3
MP3 sprich:MPEG-Audio Layer 3
Codierung asyymetrisch (Aufwand beim codieren wesentlich höher als beim Decodieren)
Eckdaten:
Layer 1 (384 kBit/s): Dig. Compact Casette
Layer 2 (256 kBit/s): DAB, MUSICAM
Layer 3 (128 kBit/s): MP3

 

Grundsätzliche Schritte:
1. Teilung in 32 Subbänder
(fest Layer1,2; variabel Layer3)
2. Quantisierung entspr. der Maskierungsmethoden (frequenz-, zeit-abhängig)
3. Reduzierung überflüssiger Stereoinformation
3. RLC
4. Huffmann

Die Qualitätsstufen von MP3 im Überblick
Klangqualität Modus Bitrate Kompressionsrate
Telefon mono 8 KBit/s (0,3-3,4 KHz Bandbreite) 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

gemäß Fraunhofer Institut

Zerlegung des Audiosignals in 32 Subbänder

32 Frequenzbänder (Subbands) mit einer Bandbreite von 625 Hz.
Beim Layer 3 sind die Subbänder an die Eigenschaften des menschlichen Gehörs angepasst -->unterschiedl. Bandbreite.
Der MP3-Encoder untersucht jedes Subband einzeln 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.

Bildgröße: 17 kByte
Bild 1: Über eine Filterbank wird das Audiosignal in 32 Frequenzbänder unterteilt.

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 0000011101010101, --> 11101010101 RLC
+2 Angaben:
Skalierungsfaktor (gibt an, an welcher Stelle die verbliebenen Bits ursprünglich gestanden haben)
Bitallocation (Angabe, wieviel Bits verblieben sind)
-->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 (variable Subbänder)

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.

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.

Bildgröße: 10 kByte
[10 kByte]
Bild 2: Ein Sinuston von 1500 Hz schlägt sich nach Durchlaufen der Filterbank in zwei Frequenzbändern nieder.

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.
Fazit: variable

Huffmann-Kodierung

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.

Bildgröße: 10 kByte
Bild 3: Eine lange Bitfolge kennzeichnet einen selten auftretenden Wert, häufige Werte sind durch eine kurze Bitfolge dargestellt.

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.

Bildgröße: 13 kByte Bild 4: Der Datenstrom des Layer 3 besteht aus so genannten Frames, von denen jedes einen eigenen Header besitzt.

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.

Bildgröße: 13 kByte Bild 5: Im Frameheader(32 Bit) sind alle wichtigen Informationen zu der Qualität der MP3-Datei hinterlegt.

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- InfoCRC-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, 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.

Bild 6: Mittlerweile existieren zahlreiche Programme, die ein nachträgliches Editieren des ID3-Tag erlauben.

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)



Literatur:            
/1/ Malte Jeschke, tecchannel 2000

/2/ Thomas Sporer, Uni Erlangen
© ansorg 10/2000