Cover Graphik mit externem Programm extrahieren


#1

Hallo zusammen,

ich benötige Information über den Gebrauch des Graphic Frames, beschrieben mit Tag3 Editor.

Ich möchte, mit einer selbst geschriebenen Applikation, die eingebetteten Graphiken aus einer sehr großen Anzahl von MP3 Files extrahieren. Mir sind bei der Programmierung unterschiedliche Dateneinträge im Frame “APIC“ aufgefallen. <_<

Beispiele:

Codierung UTF16

Frame Header
41 50 49 43 APIC
00 06 2C BD Größe der Graphik (23741 Byte ??)
00 00 Flags

Vorhandener Graphik Header
00 69 6D 61 67 65 2F 6A 70 65 67 00 03 00 (scheinbar o.k.)

Bginn der Graphik (JPG Datei)
FF D8 FF E0 .. .. .. .. ..

Codierung UTF8

Frame Header
41 50 49 43 APIC
00 18 68 12 Größe der Graphik (75794 Byte ??)
00 03 Flags

Vorhandener Graphik Header
00 18 59 3D 00 69 6D 61 67 65 2F 6A 70 65 67 00 03 00 (mir nicht erklärbare vorangestellte 4 Byte)

Bginn der Graphik (JPG Datei)
FF D8 FF E0 .. .. .. .. ..

Originalgröße der Graphik = 404655 Byte.

Nach dem Informal Standard Document:
id3v2.3.0.txt
von M. Nilsso vom 3rd February 1999 ist der Headeraufbau wie nachfolgend aufgeführt :slight_smile:

Text encoding $xx MIME type $00 Picture type $xx Description $00 (00) Picture data

In der UTF16 Codierung scheint der Graphic Header mit der Textcodierung, MimeType und PictureType in Ordnung zu sein. Die Größen im Frameheader ist mir jedoch nicht erklärbar.

In der UTF8 Codierung scheint mir der Graphic Header und die Größe im FrameHeader unplausible zu sein. :huh:

Bei dem Vergleich der extrahierten Daten (Bereich zwischen FF D8 < und > FF D9) mit den Originaldaten fällt auf, daß die Werte FF 00 mit den Werten FF 00 00 ersetzt wurden. Werden diese Daten wieder korrigiert (1872 Vorkommen ersetzt), dann sind die extrahierten Daten auch als JPG Image anzeigbar. :wink:

Wer hat Erkenntnisse über den Aufbau des APIC Frames bei unterschiedlichen Codierungen und kann mir hier weiterhelfen. Eine Systematic konnte ich bisher nicht finden.

Vorab schon mal Danke für die Unterstützung.


#2

Nach oben schieb.
Ich frage mich auch, wie da der Header aufgebaut ist. Das hängt auf alle Fälle mit id3v2.4 zusammen.
Aber leider ist das in der Doku zu v2.4 nicht dokumentiert, wo die Bytes herkommen könnten.


#3

Kann nur empfehlen den ganzen Standard zu lesen, steht alles drin.
Hier passt aus id3v2.4.0-structure.txt Kapitel "4. ID3v2 frame overview"


#4

Hier http://home.fuse.net/honnert/hundred/UltraID3Lib/ gibt es noch weiterführende Informationen. Vielleicht kannst Du daraus was für Deine Programmier-Umgebung ableiten.