Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi ID3 Tags auslesen (https://www.delphipraxis.net/166487-id3-tags-auslesen.html)

loirad 15. Feb 2012 10:52

ID3 Tags auslesen
 
Hallo Community,

Ich würde gerne für einen Musikverwalter aus .mp3-Dateien die ID3 Tags auslesen (Interpret, Titel, Erscheinungsjahr,...). Ich habe Google schon durchforstet und nichts brauchbares gefunden. Geht das mit Delphi (Wenn ja wie)? Wäre schön, wenn ihr mir helfen könntet :thumb:

Liebe Grüße
loirad

DeddyH 15. Feb 2012 10:55

AW: ID3 Tags auslesen
 
Such mal nach den MP3FileUtils (oder so ähnlich) von Gausi.

loirad 15. Feb 2012 10:59

AW: ID3 Tags auslesen
 
Geht es auch ohne irgendeine Erweiterung:?:
:arrow:Ist nämlich für die Schule und da macht sich das schlecht!

LG loirad

DeddyH 15. Feb 2012 11:01

AW: ID3 Tags auslesen
 
Man könnte sich das ja herunterladen und spicken, ohne es selbst einzusetzen. Oder man erfindet das Rad eben neu ;)

Klaus01 15. Feb 2012 11:09

AW: ID3 Tags auslesen
 
Hallo,

wenn es sich um ID3v1 Tags handelt sollte es doch recht einfach machbar sein.

Eine Beschreibung findest Du hier

Demzufolge einfach die mp3 Datei mit TFileStream öffnen.
fStream.seek(128,soFromEnd), springst Du auf die FilePosistion an dem der ID3Tag beginnen sollte.

Grüße
Klaus

loirad 15. Feb 2012 11:29

AW: ID3 Tags auslesen
 
Wie finde ich heraus, was es für ein ID3 Format ist?

Gausi 15. Feb 2012 12:00

AW: ID3 Tags auslesen
 
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.

loirad 15. Feb 2012 12:03

AW: ID3 Tags auslesen
 
Danke für die Ausführliche Information Gausi - ich werde auf deinen Code zurückgreifen glaube ich. Ist dein Code für alle ID3 Tags möglich oder nur für eine bestimmte Version?
LG loirad

Gausi 15. Feb 2012 12:11

AW: ID3 Tags auslesen
 
Darin enthalten sind drei Klassen: TMpegInfo (so in etwa) liest Daten wie Dauer, Bitrate, Channelmode etc. aus, die nicht im ID3Tag gespeichert sind.

TID3v1Tag behandelt den ID3v1Tag, und TID3v2Tag den in Version 2. Um die Unterversionen muss man sich dabei nicht weiter kümmern. Schau dir einfach die Demos an, oder mein Tutorial zur Player-Programmierung. Da gehe ich auch darauf ein, wie man z.B. übersichtlich aus den Daten an eine Info "Titel" bekommt.

ATS3788 1. Nov 2012 09:02

AW: ID3 Tags auslesen
 
Tolle Arbeit:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz