Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi WMA TAGs auslesen (https://www.delphipraxis.net/94639-wma-tags-auslesen.html)

dominikkv 24. Jun 2007 20:09


WMA TAGs auslesen
 
Hi

zur zeit benutze ich die ATL (Audio Tools Library) um den TAG aus einem WMA-File zu lesen.
Allerdings hab ich festgestellt das das Album und die Tracknummer nur manchmal richtig ausgelesen werden, in den meisten fällen kommt einfach nur '' oder 0 raus.
Ich weiß aber das diese Informationen im File enthalten sind, da diese im Explorer und in Winamp richtig angezeigt werden.

Hier der Code wie ich die TAGs hole:

Delphi-Quellcode:
function TMusicInfo.LoadWma(Source: string): Boolean;
begin
  result := false;

  if WmaFile.ReadFromFile(Source) then
    if WmaFile.Valid then
      begin
        pTyp := Wma;
        pTitle := WmaFile.Title;
        pAlbum := WmaFile.Album;
        pArtist := WmaFile.Artist;
        pGenre := WmaFile.Genre;
        pBitRate := WmaFile.BitRate;
        pTrack := WmaFile.Track;
        pDuration := WmaFile.Duration;
        result := True;
      end;
end;
Wie gesagt, Titel und Interpret etc werden richtig ausgelesen, nur Album und Tracknummer (Track) werden in ca 80% der Files als leerer String bzw 0 zurückgegeben.

Hat jemand eine Idee wie ich das hinbekomme oder eine andere Lösung mit der ich an die TAGs komme?
Vielen dank,
mfg.Dominik

Dunkel 24. Jun 2007 20:20

Re: WMA TAGs auslesen
 
Hallo!

Hast Du schon mal was von AudioGenie gehört? Diese ActiveX-Komponente kann nicht nur WMA-Tags lesen, schreiben kann sie auch. Bisher bin ich noch auf keine Probleme gestoßen.

Ist zwar keine Freeware (beim Instanzieren kommt ein Nagscreen), nichts desto trotz ohne Einschränkungen nutzbar.

Gausi 24. Jun 2007 20:23

Re: WMA TAGs auslesen
 
Ich hatte mal ein sehr ähnliches (wenn nicht dasselbe) Problem. Ich hab Version 1.0 vom 29. April 2002 der ATL-WMA-Unit. Und da ist in eriner Prozedur ein kleines Fehlerchen drin. So klappt es bei mir:
Delphi-Quellcode:
procedure ReadTagExtended(const Source: TStream; var Tag: TagData);
var
  Iterator1, Iterator2, FieldCount, DataSize, DataType: Word;
  FieldName, FieldValue: WideString;
begin
  { Read extended tag data }
  Source.ReadBuffer(FieldCount, SizeOf(FieldCount));
  for Iterator1 := 1 to FieldCount do
  begin
    { Read field name }
    Source.ReadBuffer(DataSize, SizeOf(DataSize));
    FieldName := ReadFieldString(Source, DataSize);
    { Read value data type }
    Source.ReadBuffer(DataType, SizeOf(DataType));
    { Read field value only if string }
    if DataType = 0 then
    begin
      Source.ReadBuffer(DataSize, SizeOf(DataSize));
      FieldValue := ReadFieldString(Source, DataSize);
    end
    else
     begin
      ////
      // Added By Daniel Gausi Gaußmann, 16.3.2006
      Source.ReadBuffer(DataSize, SizeOf(DataSize));
      /////
      Source.Seek(DataSize, soFromCurrent);
    end;
   
    { Set corresponding tag field if supported }
    for Iterator2 := 1 to WMA_FIELD_COUNT do
      if UpperCase(Trim(FieldName)) = WMA_FIELD_NAME[Iterator2] then
        Tag[Iterator2] := FieldValue;
  end;
end;

dominikkv 24. Jun 2007 20:31

Re: WMA TAGs auslesen
 
ok Jungs, danke für eure Hilfe.
Von AudioGenie hab ich noch nix gehört, hab aber das Problem mit dem verbesserten Code von Gausi lösen können :thumb:

Vielen Dank an euch beide :cheers:

mfg.Dominik

semo 15. Jul 2007 15:41

Re: WMA TAGs auslesen
 
vielleicht sollte man diese kleine verbesserung den entwicklern dieses sourceforge projektes melden?

Gausi 15. Jul 2007 16:07

Re: WMA TAGs auslesen
 
Hätte ich auch schon mal gemacht, aber dieses Projekt sieht ziemlich tot aus :(

Zumindest, wenn man die letzte "News" auf der Seite liest: http://mac.sourceforge.net/atl/

semo 17. Jul 2007 09:38

Re: WMA TAGs auslesen
 
dann sollten wir uns da mal drum kümmern :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz