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
MPEG Layer 1 bis 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.
Jedes Sample besteht zwar aus 16 Bit, jedoch sind nicht unbedingt alle 16 nötig,
um den Pegel darzustellen. Sample 0000011101010101, --> 11101010101 RLC 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.
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. 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.
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.
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.
Bild 1: Über eine
Filterbank wird das Audiosignal in 32 Frequenzbänder unterteilt.
So können beispielsweise die führenden Nullen eines 16-Bit-Samples entfallen.
Ergibt sich bei einem
+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.
Bild 2: Ein Sinuston
von 1500 Hz schlägt sich nach Durchlaufen der Filterbank in zwei Frequenzbändern
nieder.
Fazit: variable
Bild 3: Eine lange
Bitfolge kennzeichnet einen selten auftretenden Wert, häufige Werte sind
durch eine kurze Bitfolge dargestellt.
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.
error protection (1 Bit): Wenn das Error Protection Bit
gesetzt ist, folgt nach dem Frameheader eine 16-Bit- bitrate_index (4 Bit): Hier steht, in welcher Bitrate
die Datei codiert wurde.
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.
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:
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.
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.
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.
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) Literatur:
Bild 4: Der Datenstrom
des Layer 3 besteht aus so genannten Frames, von denen jedes einen eigenen
Header besitzt.
Bild 5: Im Frameheader(32
Bit) sind alle wichtigen Informationen zu der Qualität der MP3-Datei hinterlegt.
Wert
Bedeutung
00
reserviert
01
Layer 3
10
Layer 2
11
Layer 1
CRC-Prüfsumme.
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
Wert
MPEG1
MPEG2
MPEG2.5
00
44100
22050
11025
01
48000
24000
12000
10
32000
16000
8000
11
reserviert
reserviert
reserviert
Wert
Bedeutung
00
Stereo
01
Joint Stereo
10
Zweikanal
11
Mono
Wert
intensity stereo
M/S-stereo
00
aus
aus
01
an
aus
10
aus
an
11
an
an
Wert
Rauschunterdrückung
00
keine
01
50/15 ms
10
reserviert
11
CCITT j.17
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
/1/ Malte Jeschke, tecchannel 2000
/2/ Thomas Sporer, Uni Erlangen
© ansorg 10/2000