Delphi-PRAXiS
Seite 2 von 2     12   

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 17:06

Re: ID3v1 und ID3v2 auslesen
 
Hi,
aus zwei bzw. drei Gründen nehme ich im Moment nicht die JVCL: erstens habe ich keine Möglichkeit (lies Zeit) 15MB herunterzuladen (wg. ISDN) um dann unter Umständen festzustellen, dass es nicht richtig mit D2005 funktioniert und zweitens weil ich gerne auf jegliche Zusatzkomponenten/-bibliotheken verzichten möchte. ;)

Aber ansonsten habe ich nichts gegen die JVCL. Ich warte im Moment auf den 20. Dezember in der Hoffnung, dass dann die JVCL Version 3 fertig ist und ich mir relativ sicher sein kann, dass die 15MB sich gelohnt haben (die ich dann aber auch in der Schule runterladen werde). ;)

Chris

Muetze1 5. Dez 2004 21:02

Re: ID3v1 und ID3v2 auslesen
 
Moin!

In dem oben von dir verlinkten Beitrag habe ich auch auf meine ID3 Tag Lib verwiesen und diese kommt ohne Komponente aus sondern ist eine reine Klasse und du kannst es ja bei dir nutzen und es sollte Delphi 2005 kompatibel sein.

MfG
Muetze1

DelphiFreund 12. Dez 2004 19:36

Re: ID3v1 und ID3v2 auslesen
 
Hi Leute,
als ich gerade diesen Thread laß ist mir etwas aufgefallen.
@Chakotay1308: Diese Version:
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;

funktionioniert nur bei ID3v1 Tags, es gibt aber schon seit langem die oft verwendete ID3v1.1. Du solltest auf jeden Fall die Funktion ausbauen, die Struktur ist folgende:
ID ('TAG')
Title 30
Artist 30
Album 30
Year 4
Comment 28
0-Byte ($0) 1
Album Track (Titelnummer) 1
Genre 1

die Zahlen sind natürlich in Byte.


Gruß DelphiFreund

tommie-lie 12. Dez 2004 19:41

Re: ID3v1 und ID3v2 auslesen
 
Aber nicht immer wird v1.1 benutzt, manchmal ist der Kommentar tatsächlich 30 Zeichen lang. Der Indikator für v1.1 sind die letzten beiden Byte des Comment-Feldes, ist der vorletzte ein Nullbyte und der letzte ungleich 0, dann ist der letzte die Tracknummer. Ist das vorletzte ungleich 0, ist es v1.0 und die letzten beiden gehören zum Kommentar.

DelphiFreund 12. Dez 2004 19:43

Re: ID3v1 und ID3v2 auslesen
 
Stimmt, darauf sollte man natürlich achten, ich versuche ja auch seit gestern TAGs zu lesen und zu schreiben


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Seite 2 von 2     12   

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