So habe das Problem jetzt gelöst (Nein nicht das mit Delphi warum auch immer es hier in der
IDE funktioniert hat)
Unter Win7 habe ich mit meinem PrivframesWriter die Frames auf diese weise in die Mp3 Dateien geschrieben.
Delphi-Quellcode:
for i := 1
to 16
do
begin
b := Random(255);
GUID.
Write(b, 1);
end;
v23Tag.SetPrivateFrame('
WM/WMCollectionID',
GUID);
v23Tag.SetPicture('
image/jpeg', 0, '
*', PicData);
v23Tag.WriteToFile(mp3file);
Das hatte zur folge das jede Datei mit einer anderen
GUID erstellt wurde.
Hier lag der erste Fehler denn für ein Album egal welche Dateien geladen werden muss die
GUID immer gleich sein.
Unter Win7 schien das aber egal zu sein es hat immer funktioniert.
Nun habe ich es so abgeändert.
Delphi-Quellcode:
for i := 1
to 16
do
begin
b := 0
GUID.
Write(b, 1);
end;
v23Tag.SetPrivateFrame('
WM/WMCollectionID',
GUID);
v23Tag.SetPicture('
image/jpeg', 0, '
*', PicData);
v23Tag.WriteToFile(mp3file);
jetzt ist es egal welches Album bzw. Datei das Frame enthält.
Die
GUID ist jetzt immer AlbumArt_{00000000-0000-0000-0000-000000000000}_Large.jpg
So muss sich niemand damit rumschlagen nach der richtigen zu suchen damit das Picture korrekt angezeigt wird.
Befindet sich kein Frame (
GUID) innerhalb der Datei nun dann wird die leere Hülle angezeigt.
Damit kann ich leben.
Wenn nun jemand das Cover der jeweiligen MP3 anzeigen möchte muss die
GUID addiert und ein Picture mit der NullGuid im Albumpfad vorhanden sein.
Habe jetzt noch zusätzlich das schreiben der AlbumArt_{00000000-0000-0000-0000-000000000000}_Large.jpg automatisiert.
Bei 100'ten von Alben ist das zu mühselig von Hand zu machen.
Delphi-Quellcode:
v23Tag.SetPrivateFrame('
WM/WMCollectionID',
GUID);
v23Tag.SetPicture('
image/jpeg', 0, '
*', PicData);
v23Tag.WriteToFile(mp3file);
if Path <> OldPath
then
begin
if FileExists(Path + '
AlbumArtSmall.jpg')
and not
FileExists(Path + '
AlbumArt_' + NullGUID + '
_Large.jpg')
then
begin
try
JpgIn := TJPEGImage.Create;
JpgOut := TJPEGImage.Create;
JpgIn.LoadFromFile(Path + '
AlbumArtSmall.jpg');
finally
JpgOut.Assign(JpgIn);
JpgOut.SaveToFile(Path + '
AlbumArt_' + NullGUID + '
_Large.jpg');
JpgIn.Free;
JpgOut.Free;
OldPath := Path;
end;
end;
end;
gruss