MP3 ID3 Tags ... Wie kann man die teile lesen?
-
FragSalat -
9. Januar 2014 um 14:19 -
14.167 Mal gelesen -
0 Kommentare
ID3 Header
Eine MP3 erkennt man daran das ID3 0x494433 in den ersten 3 Bytes steht.
Diese Bytes zeigen uns auch gleich den Start der ID3 Tags, welche z.B. den Interpreten und das Bild einer MP3 enthalten.
Die Länge der ID3 Tags wird als ein Syncsafe 32 Bit Integer, bei dem jedes 7te bit gelöscht wird, angegeben.
In unserem Fall ist der Ausgangswert 0x4812(hex) = 18450(dez) = 0100 1000 0001 0010(bin).
Nun löschen wir jedes siebente Bit (rechts nach links) und wir erhalten den Binärwert 100 1000 001 0010 = 9234(dez).
Dieser entspricht der ID3 Tags Länge ab dem Ende des Headers.
Vorher 0x4812(hex) = 0100 1000 0001 0010(bin) = 18450(dec).
Danach 0x2412(hex) = 100 1000 001 0010(bin) = 9234(dec).
49 44 33 3 bytes ID3
04 00 2 bytes Version in diesem Fall ID3v2.4.0
0 1 bit 1 wenn nicht synchron
0 1 bit 1 wenn ein erweiterter header existiert
0 1 bit 1 wenn die id3 tags experimentell sind
0 7 bits Werden nicht benutzt
00 00 48 12 4 byte ID3 Läng
ID3 Frames
Die Frames der ID3 Tags enthalten nun die gesuchten Informationen.
Jedes Frame besitzt einen Header, welcher den Typ, die Länge und diverse Flags des Frames beinhaltet.
Der Typ ist immer ein vier Bytes langer String und die Länge wird als 32 Bit Integer angegeben.
Bei den Flags haben wir zwar 2 Bytes zur verfügung, von denen aber jeweils nur die ersten 3 Bits genutzt werden.
Jedes Frame der ID3 Tags, welches einen Text darstellen möchte hat beim Typ als ersten Buchstaben ein T.
An dieser Stelle werde ich nur auf das Text Frame für das Album (TALB) und auf das Frame für das angehangene Bild weiter eingehen.
Wer weitere Informationen zu den Frames oder über die ID3 Tags allgemein haben will, der sollte auf id3.org
Frame Header (10 Bytes)
54 41 4C 42 4 bytes Der Name des Frames. Hier "TALB"
00 00 00 0F 4 bytes Die Länge des Frameinhaltes. Hier 15
0 3 bits Flags des Frames
0 7 bits Werden nicht benutzt
0 3 bits Flags des Frames
0 7 bits Werden nicht benutzt
Frame Content (15 bytes)
03 1 byte Text Encoding
Der Inhalt (Framelänge - 1 Byte da das Encodingbyte zum Inhalt des Frames gehört)
53 74 61 67 65 54 77 6F 20 41 6C 62 75 6D StageTwo Album
Alles anzeigen
Alle Frames der ID3 Tags haben den gleichen Aufbau des Headers aber der Inhalt ist von Frametyp zu Frametyp unterschiedlich.
Das APIC Frame, welches das Bild einer MP3 enthält, besitzt zusätzlich den Mimetyp, die Beschreibung und den Bytestream des Bildes.
In den ID3 Tags werden die Zeichenketten, sofern keine Längenangabe voran steht, mit einem 0x00 Byte terminiert.
Der Bytestream kann meines Wissens nach jedes gängige Bildformat beinhalten, wobei aber auf der Webseite der ID3 Tags die Formate jpeg und png bevorzugt werden.
Welchen Bildtyp man am Ende vor sich hat, kann man anhand des Mimetypen oder des Headers im Bytestreams erkennen.
Header (28 Bytes)
41 50 49 43 4 bytes Der Name des Frames. Hier "APIC"
00 00 46 1D 4 bytes Die Länge des Frameinhaltes. Hier 17949
0 1 bit
0 1 bit
0 1 bit
0 7 bits Werden nicht benutzt
0 1 bit
0 1 bit
0 1 bit
0 7 bits Werden nicht benutzt
Content
03 1 byte Text Encoding
69 6D 61 67 65 2F 6A 70 65 67 n bytes Der Mimetyp des Bildes
00 1 byte Der Mimetyp String wird durch 0x00 terminiert also beendet
00 1 byte Der Bildtyp
73 74 61 67 65 74 77 6F 2D 6C 6F 67 6F 2E 6A 70 67 n bytes Die Beschreibung des Bildes
00 1 byte Die Beschreibung wird durch 0x00 terminiert also beendet
Hier beginnt der Bytestream des Bildes. 0xFF 0xD8 Ist der Indikator für den Start eines jpeg Bildes.
FF D8 FF E0 00 10 4A 46 49 46 00 01 02 00 00 01 00 01 00 00
FF FE 00 04 2A 00 FF E2 02 1C 49 43 43 5F 50 52 4F 46 49 4C
45 00 01 01 00 00 02 0C 6C 63 6D 73 02 10 00 00 6D 6E ...
Alles anzeigen
Ich hoffe, das Ihr hier hilfreiche Informationen über die ID3 Tags finden konntet und sie euch weiter helfen 
Sollte ich einen Fehler in dem Artikel gemacht haben, ihr Fragen oder Wünsche habt, schreibt mich einfach an 
Zum Abschluss gibt es hier noch meine Testdatei.
Kommentare