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

MP3 ID3 Tags Struktur ... Wie kann man die teile lesen? 5 von 5 mit 2 Stimmen
| Sick^

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Werbung
MP3 Dateien enthalten einige tolle Informationen, die so manch einer gerne extrahieren möchte. Hier geht es um die Byte Struktur der ID3 Tags, welche anhand eines Beispiels erläutert werden.

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

Quellcode: 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änge

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

Der Inhalt eines TALB Frames besteht nur aus einem Byte, welches die Textcodierung angibt und den Inhalt selber.
Die Textcodierung kann die Werte 0x00 bis 0x03 enthalten welche von ASCII bis UTF-16 reichen.
Hier eine Auflistung der Codierungen:
0x00 - ISO-8859-1 (ASCII)
0x01 - UTF-16 mit Byte Order Mark (BOM)
0x02 - UTF-16BE ohne Byte Order Mark (BOM),
0x03 - UTF-8

Quellcode: Der Aufbau des TALB (Album) Text Frames

  1. Frame Header (10 Bytes)
  2. 54 41 4C 42 4 bytes Der Name des Frames. Hier "TALB"
  3. 00 00 00 0F 4 bytes Die Länge des Frameinhaltes. Hier 15
  4. 0 3 bits Flags des Frames
  5. 0 7 bits Werden nicht benutzt
  6. 0 3 bits Flags des Frames
  7. 0 7 bits Werden nicht benutzt
  8. Frame Content (15 bytes)
  9. 03 1 byte Text Encoding
  10. Der Inhalt (Framelänge - 1 Byte da das Encodingbyte zum Inhalt des Frames gehört)
  11. 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.

Quellcode

  1. Header (28 Bytes)
  2. 41 50 49 43 4 bytes Der Name des Frames. Hier "APIC"
  3. 00 00 46 1D 4 bytes Die Länge des Frameinhaltes. Hier 17949
  4. 0 1 bit
  5. 0 1 bit
  6. 0 1 bit
  7. 0 7 bits Werden nicht benutzt
  8. 0 1 bit
  9. 0 1 bit
  10. 0 1 bit
  11. 0 7 bits Werden nicht benutzt
  12. Content
  13. 03 1 byte Text Encoding
  14. 69 6D 61 67 65 2F 6A 70 65 67 n bytes Der Mimetyp des Bildes
  15. 00 1 byte Der Mimetyp String wird durch 0x00 terminiert also beendet
  16. 00 1 byte Der Bildtyp
  17. 73 74 61 67 65 74 77 6F 2D 6C 6F 67 6F 2E 6A 70 67 n bytes Die Beschreibung des Bildes
  18. 00 1 byte Die Beschreibung wird durch 0x00 terminiert also beendet
  19. Hier beginnt der Bytestream des Bildes. 0xFF 0xD8 Ist der Indikator für den Start eines jpeg Bildes.
  20. FF D8 FF E0 00 10 4A 46 49 46 00 01 02 00 00 01 00 01 00 00
  21. FF FE 00 04 2A 00 FF E2 02 1C 49 43 43 5F 50 52 4F 46 49 4C
  22. 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.

Pfad
/
Dateigröße
50,28 KiB
Mime Typ
audio/mpeg
Erstellt
Bitrate
128 Kbit/s
Dauer
0 Minuten 2 Sekunden
Sampelrate
44100 Hz
Titel
Test Titel
Album
StageTwo Album
Interpret
Sick^
Herstellung
1389298380
Genre
52

Werbung
  • Es wurden noch keine Einträge an der Pinnwand verfasst.