Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi ID3v1 und ID3v2 auslesen (https://www.delphipraxis.net/35314-id3v1-und-id3v2-auslesen.html)

CalganX 5. Dez 2004 14:18


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 hier:
Delphi-Quellcode:
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;
Das Problem ist nun aber, dass ich bisher nichts gefunden habe, um die neuere Version auszulesen.
Hat jemand da was für mich?

Chris

tommie-lie 5. Dez 2004 14:23

Re: ID3v1 und ID3v2 auslesen
 
Die zweite Version ist nicht so einfach aufgebaut. Die Struktur findest du unter http://www.id3.org, wenn du es selber programmieren willst.
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.

CalganX 5. Dez 2004 14:27

Re: ID3v1 und ID3v2 auslesen
 
Hi,
Zitat:

Zitat von tommie-lie
Die zweite Version ist nicht so einfach aufgebaut. Die Struktur findest du unter http://www.id3.org, wenn du es selber programmieren willst.

Daran dachte ich eigentlich. ;) Aber ich wollte nicht komplett ohne Source-Denkanstoß anfangen. :zwinker:

Zitat:

Zitat von tommie-lie
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.

Das reicht mir völlig. :stupid:
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:

Zitat von tommie-lie
ID3v2-Unterstützung ist zwar bei weitem noch nicht komplett, aber die Informationen, die auch ID3v1 enthält, sind fertig.

Reicht mir ebenfalls. Ich will nur Titel, Album und Interpret haben. ;)

Danke für den Hinweis. ;)
SourceCode lässt sich auch mit Notepad lesen. *g*

Chris

tommie-lie 5. Dez 2004 14:38

Re: ID3v1 und ID3v2 auslesen
 
Zitat:

Zitat von Chakotay1308
Das Problem bei den Torry-Komponenten: die sind nicht D2005-Kompatibel.

Meine sollte zumindest für den Win32-Teil funktionieren, weil's ja nur 'ne Klasse ist ;-)

Zitat:

Zitat von Chakotay1308
SourceCode lässt sich auch mit Notepad lesen. *g*

Welcher? Meiner? Klar, der ist ja auch mit'm Notepad geschrieben :mrgreen:

Robert Marquardt 5. Dez 2004 14:46

Re: ID3v1 und ID3v2 auslesen
 
Weicheier! Source schreibt man mit vi. :-D

tommie-lie 5. Dez 2004 14:48

Re: ID3v1 und ID3v2 auslesen
 
vi?!? dieser komische Editor, den keiner bedienen kann? Da bleibe ich doch lieber bei joe ;-)

CalganX 5. Dez 2004 15:19

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:

tommie-lie 5. Dez 2004 16:27

Re: ID3v1 und ID3v2 auslesen
 
Zitat:

Zitat von Chakotay1308
Nur die Lizenz stört mich. :?

Wieso? Ist die LPGL ;-)

Zitat:

Zitat von Chakotay1308
Das Projekt, was ich gerade schreibe sollte eigentlich nicht Freeware werden und die (L)GPL zwingt mich ja nahezu dazu, oder?

Jein. Freeware im Sinne von "kostenlos für jedermann" nicht, denn dein Programm würde bei statischer Linkung nur der LGPL unterliegen, d.h. du kannst das Programm auch in Objektcode und für eine entsprechende (finanzielle) Gegenleistung für die Übertragung des Programmes weitergeben. Dein Programm muss also nicht "free" sein, es muss nur unter der LGPL veröffentlich werden.
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 ;-)

CalganX 5. Dez 2004 16:39

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

Robert Marquardt 5. Dez 2004 16:58

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 06:48 Uhr.
Seite 1 von 2  1 2      

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