Thema: Delphi ID3 Tags auslesen

Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi
Online

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ID3 Tags auslesen

  Alt 15. Feb 2012, 12:00
Es gibt zwei Hauptversionen vom ID3Tag:

Version 1 und Version 2. In einer mp3-Datei können keine, eine oder beide Tagversionen enthalten sein, und die darin enthaltenen Informationen müssen auch nicht einheitlich sein.

Version 1 steht (wenn vorhanden) immer in den letzten 128 Byte einer mp3-Datei. Die ersten drei Bytes sind TAG. Dann folgen je 30 Bytes für Interpret, Titel, Album. Dann kommen 4 Bytes für das Jahr, danach 30 Bytes für einen Kommentar, und zuletzt ein Byte für das Genre.
Version 1.1 ist eine Erweiterung davon. Wenn das 29 Byte des Kommentar-Feldes 0 ist, und das 30. nicht, dann gibt das 30. Byte die Track-Nr. an.
Diese Version ist sehr einfach auszulesen und zu schreiben, ist aber aufgrund der geringen Möglichkeiten oft nur aus Kompatibiliätsgründen noch enthalten.

Version 2 ist deutlich komplizierter, hat aber dafür auch erheblich mehr Möglichkeiten. Die Datenmenge ist da nicht mehr maximal 128 Byte, sondern (iirc) 256 Megabyte. Der ID3v2-Tag steht (in der Regel) am Anfang der Datei und fängt dann mit "ID3" an, gefolgt von weiteren Header-Informationen. Danach folgen mehrere "Frames", die jeweils aus einem Frameheader und einem Datenteil bestehen. Eine sehr gute Dokumentation findet sich auf id3.org.

Für eine mp3-Verwaltung im Rahmen eines Schulprojektes ist es aber imho durchaus erlaubt, für diese doch sehr technischen Details auf Fremdcode zurückzugreifen. Alleine das Durchwuseln durch die Grundstruktur in den Subversionen 2.2, 2.3, 2.4 dauert einige Zeit. Und daran scheitert z.B. auch Microsoft - 2.4 unterstützt Windows z.B. nicht, obwohl das vor ca. 10 Jahren eingeführt wurde.

Eine Liste mit Delphi-Implementierungen findet sich auch auf id3.org. Meine Mp3FileUtils sind da seit kurzem auch verlinkt, und auch die ID3Lib von Muetze1.
The angels have the phone box.
  Mit Zitat antworten Zitat