AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi ID3 Tag auslesen mit bass.dll
Thema durchsuchen
Ansicht
Themen-Optionen

ID3 Tag auslesen mit bass.dll

Ein Thema von Muellermilchtrinker · begonnen am 25. Aug 2010 · letzter Beitrag vom 26. Aug 2010
Antwort Antwort
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

ID3 Tag auslesen mit bass.dll

  Alt 25. Aug 2010, 18:35
Hallo DP,

wie kann ich aus einer mp3 Datei ID3 Tags auslesen??? Es soll die bass.dll verwendet werden.
Ich brauch nur den Titel und den Interpret.
Danke schonmal.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

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

AW: ID3 Tag auslesen mit bass.dll

  Alt 25. Aug 2010, 19:06
Soweit ich weiß, liefert die bass.dll über BASS_ChannelGetTags nur Pointer auf die ID3v1 bzw. ID3v2-Tags zurück. Das sind dann einfach die Rohdaten, die du dann selber parsen musst. Wie die Daten strukturiert sind, findest du (wie in der bass-Hilfe angegeben) auf www.id3.org.

Alternativ kannst du fertige Units für ID3-Tags nehmen, z.B. meine Mp3FileUtils.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 16:39
Ich hab es so probiert:
Label2.Caption := BASS_ChannelGetTags(Musicfile, BASS_TAG_MUSIC_NAME); Ergebnis: Negativ
Ich bekomm nichts als Ergebnis zurück.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

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

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 16:47
Weil der Code, den du da ausführst, für MOD-Dateien gedacht ist. Steht ja auch so in der Bass-Hilfe. In mp3-Dateien gibt es keine MOD-Tags, sondern BASS_TAG_ID3 und BASS_TAG_ID3V2-Tags, manchmal auch noch die BASS_TAG_LYRICS3-Tags. Und wenn du BASS_ChannelGetTags mit einem dieser Parameter aufrufst, bekommst du einen Pointer auf die Daten dieser Tag-Formate, die du dann selber parsen musst.
Im Fall von ID3v2 ist das nicht ganz trivial, da es mehrere Unterarten davon gibt. Daher der Hinweis auf fertige andere Lösungen.

Die bass.dll ist prima zum abspielen, aber zum auslesen der Meta-Tags aus Dateien taugt sie relativ wenig.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#5

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 16:56
Also ich habs jetzt so:

Delphi-Quellcode:
type
  // some standard definition
  PID3V1Rec = ^TID3V1Rec;
  TID3V1Rec = packed record
    Tag: array[0..2] of Char;
    Title: array[0..29] of Char;
    Artist: array[0..29] of Char;
    Album: array[0..29] of Char;
    Year: array[0..3] of Char;
    Comment: array[0..29] of Char;
    Genre: Byte;
  end;

var
  ID3V1Tag: TID3V1Rec;

[...]

function BASS_GetID3TagsID3V1Rec(StreamHandle: Cardinal): TID3V1Rec;
var
  TempID3V1: TID3V1Rec;
  p: PAnsiChar;
begin
  ZeroMemory(@Result, SizeOf(TID3V1Rec));
  if StreamHandle <> 0 then
  begin
    p := BASS_ChannelGetTags(StreamHandle, BASS_TAG_ID3);
    if p <> nil then
    begin
      TempID3V1 := PID3V1Rec(p)^;
      if SameText(TempID3V1.Tag, 'TAG') then Result := TempID3V1;
    end;
  end;
end;

[...]

// in der Procedure:

    ID3V1Tag := BASS_GetID3TagsID3V1Rec(Musicfile);
    Label2.Caption := string(ID3V1Tag.Title) + #13 + string(ID3V1Tag.Artist);
Bekomm aber immer noch nix zurück.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

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

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 17:04
Das kann daran liegen, dass die mp3-Datei nur den ID3v2-Tag enthält, und nicht den komplett veralteten und stark eingeschränkten v1-Tag.

Oder du verwendest Delphi 2009 und hast beim Kopieren des Codes das Char/AnsiChar-Problem bei der Typ-Definition übersehen.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#7

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 17:10
Ich verwende Delphi 2009. Wo hab ich denn die übersehen???
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

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

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 17:19
Delphi-Quellcode:
TID3V1Rec = packed record
    Tag: array[0..2] of Char;
    Title: array[0..29] of Char;
    Artist: array[0..29] of Char;
    Album: array[0..29] of Char;
    Year: array[0..3] of Char;
    Comment: array[0..29] of Char;
    Genre: Byte;
  end;
Das müssen alles AnsiChars sein.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#9

AW: ID3 Tag auslesen mit bass.dll

  Alt 26. Aug 2010, 17:26
Ups, hab ich übersehen.
Jetzt funktioniert alles. Danke.

Delphi 2009 muss einen auch immer aufregend, mit den Änderungen von Char und AnsiChar.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 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