Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#40

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 23:26
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

Geändert von EWeiss (24. Dez 2018 um 00:36 Uhr)
  Mit Zitat antworten Zitat