1. Forum
    1. Unerledigte Themen
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Blog
    1. Artikel
  • Anmelden
  • Registrieren
  • Suche
Coding
  • Alles
  • Coding
  • Artikel
  • Forum
  • Blog-Artikel
  • Seiten
  • Erweiterte Suche
  1. StageTwo - Deine Wohlfühloase
  2. Artikel
  3. Coding

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

  • FragSalat
  • 9. Januar 2014 um 14:19
  • 14.167 Mal gelesen
  • 0 Kommentare
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).


Code: Der Aufbau des ID3 headers unserer Sample.mp3
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

Code: Der Aufbau des TALB (Album) Text Frames
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.

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

  • mp3
  • id3 tags

Vorheriger Artikel PHP OCR - Ein simpler Weg zur Texterkennung

Nächster Artikel MP3 MPEG Frames - So ermittelt man die Spielzeit

Verwandte Artikel

MP3 MPEG Frames - So ermittelt man die Spielzeit

Wer die Spielzeit, die Bitrate oder die Samplerate einer MP3 auslesen möchte, kommt nicht drum herum die MPEG Frames zu analysieren. Die MPEG Frames enthalten den wahren Inhalt, die Audiodaten (Samples), einer MP3 Datei. Aus ihnen werden die Töne erzeugt die man hört.
FragSalat
15. Januar 2014 um 14:32
0
Es wurden keine Einträge gefunden.

Kommentare

  • :)
  • :(
  • ;)
  • 8-)
  • :P
  • ^^
  • :D
  • ;(
  • X(
  • :ironie:
  • :arghs:
  • :assi:
  • :brainsnake:
  • :dos:
  • :eeeek:
  • :thx:
  • :*
  • :|
  • 8o
  • =O
  • <X
  • :blush:
  • ||
  • :gutenmorgen:
  • :/
  • :S
  • X/
  • 8)
  • :help:
  • ?(
  • :huh:
  • :hihi:
  • :rolleyes:
  • :love:
  • :pinch:
  • :hmmmm:
  • 8|
  • :cursing:
  • :wacko:
  • :hmmz:
  • :thumbdown:
  • :thumbup:
  • :king:
  • :sleeping:
  • :stock:
  • :whistling:
  • :evil:
  • :saint:
  • :knot:
  • <3
  • :!:
  • :?:
  • :musicextreme:
  • :party:
  • :patsch:
  • :pflaster:
  • :police:
  • :pupillen:
  • :schiefguck:
  • :smalleyes:
  • :smoker:
  • :tired:
  • :tot:
  • :ugly:
  • :ui:
  • :verwirrt:
  • :verysad:
  • :winki:
  • :woot:
  • :wtf:
  • :whistle3:
  • :yahoo:
  • :clapping:
  • :hi:
  • :dance:
  • :dashing:
  • :what?:
  • :np:
  • :gamer:
  • :hearth:
  • :punish:
  • :omg:
  • :kid:
  • :criminal:
  • :assassin:
  • :assaultrifle:
  • :schland:
  • :bad:
  • :beer:
  • :beta:
  • :blackeye:
  • :clapping_1:
  • :borg:
  • :cool:
  • :censored:
  • :dance3:
  • :chainsaw:
  • :diablo:
  • :chinese:
  • :friends:
  • :cookie:
  • :gamer3:
  • :gamer4:
  • :dead:
  • :girl_cray2:
  • :doofy:
  • :girl_sigh:
  • :evilgrin:
  • :good3:
  • :fie:
  • :golly:
  • :hiphop:
  • :growup:
  • :imsohappy:
  • :grumble:
  • :ireful:
  • :hail:
  • :huntsman:
  • :laugh1:
  • :ill:
  • :locomotive:
  • :lol:
  • :mosking:
  • :miffy:
  • :music:
  • :minigun:
  • :negative:
  • :modo:
  • :neo:
  • :nono:
  • :ok:
  • :oops:
  • :party2:
  • :pardon:
  • :pilot:
  • :pillepalle:
  • :pleasantry:
  • :pleasantry_1:
  • :popcorm2:
  • :popcorn:
  • :protest:
  • :puke:
  • :pump:
  • :rtfm:
  • :rofl:
  • :search:
  • :search_1:
  • :superstition:
  • :shit:
  • :thank_you:
  • :sniper:
  • :threaten:
  • :spiteful:
  • :tomato:
  • :this:
  • :tommy:
  • :vain:
  • :to_keep_order:
  • :wayne:
  • :umnik:
  • :wbb:
  • :vinsent:
  • :werderw:
  • :wacko1:
  • :zombie:
  • :warning:
  • :)
  • :(
  • ;)
  • 8-)
  • :P
  • ^^
  • :D
  • ;(
  • X(
  • :ironie:
  • :arghs:
  • :assi:
  • :brainsnake:
  • :dos:
  • :eeeek:
  • :thx:
  • :*
  • :|
  • 8o
  • =O
  • <X
  • :blush:
  • ||
  • :gutenmorgen:
  • :/
  • :S
  • X/
  • 8)
  • :help:
  • ?(
  • :huh:
  • :hihi:
  • :rolleyes:
  • :love:
  • :pinch:
  • :hmmmm:
  • 8|
  • :cursing:
  • :wacko:
  • :hmmz:
  • :thumbdown:
  • :thumbup:
  • :king:
  • :sleeping:
  • :stock:
  • :whistling:
  • :evil:
  • :saint:
  • :knot:
  • <3
  • :!:
  • :?:
  • :musicextreme:
  • :party:
  • :patsch:
  • :pflaster:
  • :police:
  • :pupillen:
  • :schiefguck:
  • :smalleyes:
  • :smoker:
  • :tired:
  • :tot:
  • :ugly:
  • :ui:
  • :verwirrt:
  • :verysad:
  • :winki:
  • :woot:
  • :wtf:
  • :whistle3:
  • :yahoo:
  • :clapping:
  • :hi:
  • :dance:
  • :dashing:
  • :what?:
  • :np:
  • :gamer:
  • :hearth:
  • :punish:
  • :omg:
  • :kid:
  • :criminal:
  • :assassin:
  • :assaultrifle:
  • :schland:
  • :bad:
  • :beer:
  • :beta:
  • :blackeye:
  • :clapping_1:
  • :borg:
  • :cool:
  • :censored:
  • :dance3:
  • :chainsaw:
  • :diablo:
  • :chinese:
  • :friends:
  • :cookie:
  • :gamer3:
  • :gamer4:
  • :dead:
  • :girl_cray2:
  • :doofy:
  • :girl_sigh:
  • :evilgrin:
  • :good3:
  • :fie:
  • :golly:
  • :hiphop:
  • :growup:
  • :imsohappy:
  • :grumble:
  • :ireful:
  • :hail:
  • :huntsman:
  • :laugh1:
  • :ill:
  • :locomotive:
  • :lol:
  • :mosking:
  • :miffy:
  • :music:
  • :minigun:
  • :negative:
  • :modo:
  • :neo:
  • :nono:
  • :ok:
  • :oops:
  • :party2:
  • :pardon:
  • :pilot:
  • :pillepalle:
  • :pleasantry:
  • :pleasantry_1:
  • :popcorm2:
  • :popcorn:
  • :protest:
  • :puke:
  • :pump:
  • :rtfm:
  • :rofl:
  • :search:
  • :search_1:
  • :superstition:
  • :shit:
  • :thank_you:
  • :sniper:
  • :threaten:
  • :spiteful:
  • :tomato:
  • :this:
  • :tommy:
  • :vain:
  • :to_keep_order:
  • :wayne:
  • :umnik:
  • :wbb:
  • :vinsent:
  • :werderw:
  • :wacko1:
  • :zombie:
  • :warning:

Registrierung

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen

Kategorien

  1. News 12
  2. Games 7
  3. Software 3
  4. Hardware 3
  5. Coding 5
  6. Filter zurücksetzen

Letzte Beiträge

  1. Gebt ihr euch zur Halloween was besonderes?

    rwckai
    2. November 2026 um 13:36
  2. One Piece

    PraxXx
    30. Oktober 2026 um 15:27
  3. Stammtisch: Wir schaffen 8888 Seiten! (1000, 1337, 2222, 3333, 4444, 5555, 6666 & 7777 geschafft)

    rwckai
    28. Oktober 2026 um 00:53
  4. Meine Erfahrungen mit moderner KI-Bildbearbeitung

    Savior
    10. Oktober 2026 um 20:44
  5. Practical guide: creating better game artwork with image-to-image AI

    jamieklausen998
    15. September 2026 um 08:48

Aktivste Themen

  1. Stammtisch: Wir schaffen 8888 Seiten! (1000, 1337, 2222, 3333, 4444, 5555, 6666 & 7777 geschafft)

    160.723 Antworten
  2. One Piece

    289 Antworten
  3. Silkroad Online Artwork | Ladescreens

    8 Antworten
  4. Gebt ihr euch zur Halloween was besonderes?

    4 Antworten
  5. Meine Erfahrungen mit moderner KI-Bildbearbeitung

    1 Antwort

Themen-Schlagwortwolke

  • 2362
  • Android
  • Battlefield
  • best
  • bot
  • C#
  • c++
  • Clan
  • Clansuche
  • FeelsBadMan
  • FIFA
  • Gaming
  • geldautomatfürdaswohnzimmer
  • GTA
  • isro
  • joymax
  • kaufberatung
  • Laptop
  • league of legends
  • lol
  • Member
  • Membersuche
  • mmorpg
  • musik
  • Notebook
  • Online
  • Pc
  • php
  • private server
  • Privat server
  • programmieren
  • PServer
  • Psro
  • Push
  • sbot
  • server
  • Silk
  • Silkroad
  • silkroad 110 CAP
  • silkroad online
  • silkroad online private server
  • silkroad private server
  • Sro
  • sro 110 CAP
  • Steam
  • suche
  • Tera
  • tv
  • vSRO
  • WoW
  1. Datenschutzerklärung
  2. Impressum