![]() |
ID3v1 und ID3v2 auslesen
Hi,
das Auslesen von Tags treibt mich noch in den Wahnsinn. :? Mein Problem ist eigentlich recht simpel: ich will die ID3-Tags aus MP3-Dateien lesen. Das Problem ist nur, dass es manchmal v1.1 und manchmal v2 oder gar beides sein kann. Ich kann auch soweit erstere Version mit folgendem Source von ![]()
Delphi-Quellcode:
Das Problem ist nun aber, dass ich bisher nichts gefunden habe, um die neuere Version auszulesen.
type
TID3Tag = record // diese Struktur erweitert die Char arrays um ein Zeichen für Nullterminator, // somit muß sie Feld für Feld gelesen und geschrieben werden, da ID3 eben diese Terminatoren NICHT speichert. ID: array[0..3] of Char; Title: array[0..30] of Char; Artist: array[0..30] of Char; Album: array[0..30] of Char; Year: array[0..4] of Char; Comment: array[0..30] of Char; Genre: Byte; end; function ReadID3Tag(const FileName: String): TID3Tag; begin FillChar(Result, SizeOf(Result), 0); with TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone) do try Position := Size - 128; Read(Result.ID, 3); Read(Result.Title, 30); Read(Result.Artist, 30); Read(Result.Album, 30); Read(Result.Year, 4); Read(Result.Comment, 30); Read(Result.Genre, 1); finally Free; end; end; Hat jemand da was für mich? Chris |
Re: ID3v1 und ID3v2 auslesen
Die zweite Version ist nicht so einfach aufgebaut. Die Struktur findest du unter
![]() Ansonsten gibt es auf Torry sicherlich einige Komponenten, die auch ID3v2 lesen können, zumindest rudimentär. Alternativ habe ich im DF mal mein [df]"UltimaTag"[/df] vorgestellt, das ID3v1 und ID3v2 lesen und schreiben kann. ID3v2-Unterstützung ist zwar bei weitem noch nicht komplett, aber die Informationen, die auch ID3v1 enthält, sind fertig. An einem kompletten Redesign von UltimaTag arbeite ich noch, zur Zeit gibt's Lese-Support für einige ID3v2-Frames, allerdings bisher ungetestet, schreibender Zugriff ist noch lange nicht fertig. |
Re: ID3v1 und ID3v2 auslesen
Hi,
Zitat:
Zitat:
Das Problem bei den Torry-Komponenten: die sind nicht D2005-Kompatibel. Und ich habe keine Lust wieder zwei Stunden daran zu sitzen ein D7-Paket auf D9 umzuschreiben. :? Zitat:
Danke für den Hinweis. ;) SourceCode lässt sich auch mit Notepad lesen. *g* Chris |
Re: ID3v1 und ID3v2 auslesen
Zitat:
Zitat:
|
Re: ID3v1 und ID3v2 auslesen
Weicheier! Source schreibt man mit vi. :-D
|
Re: ID3v1 und ID3v2 auslesen
vi?!? dieser komische Editor, den keiner bedienen kann? Da bleibe ich doch lieber bei joe ;-)
|
Re: ID3v1 und ID3v2 auslesen
Hi,
klar. Deine Unit ist nahezu perfekt. Nur die Lizenz stört mich. :? Das Projekt, was ich gerade schreibe sollte eigentlich nicht Freeware werden und die (L)GPL zwingt mich ja nahezu dazu, oder? Chris Joe ist ganz gut. Aber Vi finde ich besser. :tongue: Auf jedenfalls sind beide besser, als emacs. :kotz: |
Re: ID3v1 und ID3v2 auslesen
Zitat:
Zitat:
Bei einer dynamischen Linkung (kompilier' dir 'ne DLL mit Interface oder ein BPL ;-)) ist dein Programm lediglich eines, das meine Bibliothek benutzt, unterliegt also weder der GPL, noch der LGPL. Allerdings bin ich der Urheber, habe also sämtliche Rechte an der Bibliothek, und wenn du lieb guckst (sehe ich da ein Delphi2005 in deinen Augen? :mrgreen:), räume ich dir eine Sonderlizensierung ein :zwinker: Andererseits wolltest du doch sowieso nur einen Denkanstoß haben und dir den Code selber schreiben, dein Code wäre dann von dir zu lizensieren, unter jeder Lizenz die dir einfällt ;-) |
Re: ID3v1 und ID3v2 auslesen
Hi,
okay. ;) Ich denke sowieso, dass ich selber was schreiben muss, weil ich eigentlich das gerne direkt in meine Klasse einbauen möchte. Naja, ich werde mir was einfallen lassen. Danke für deine Hilfe, Chris |
Re: ID3v1 und ID3v2 auslesen
Wie waere es mit der JCL/JVCL? Zu Id3 v1 und v2 ist da auch etwas dabei.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz