MP3 ID3 Tags ... Wie kann man die teile lesen?


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).




Code: Der Aufbau des ID3 headers unserer Sample.mp3
  1. 49 44 33 3 bytes ID3
  2. 04 00 2 bytes Version in diesem Fall ID3v2.4.0
  3. 0 1 bit 1 wenn nicht synchron
  4. 0 1 bit 1 wenn ein erweiterter header existiert
  5. 0 1 bit 1 wenn die id3 tags experimentell sind
  6. 0 7 bits Werden nicht benutzt
  7. 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



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.



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.

id3-sample.mp3

    Teilen

    Kommentare