![]() |
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:
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.
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; Hat jemand eine Idee wie ich das hinbekomme oder eine andere Lösung mit der ich an die TAGs komme? Vielen dank, mfg.Dominik |
Re: WMA TAGs auslesen
Hallo!
Hast Du schon mal was von ![]() Ist zwar keine Freeware (beim Instanzieren kommt ein Nagscreen), nichts desto trotz ohne Einschränkungen nutzbar. |
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; |
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 |
Re: WMA TAGs auslesen
vielleicht sollte man diese kleine verbesserung den entwicklern dieses sourceforge projektes melden?
|
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: ![]() |
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