Laut dem Tag-Projekt, das du eben verlinkt hast, sind CollectionID und CollectionGroupID relevant. Die sind beide identisch und 16 Byte lang in der Datei, die du mir geschickt hast.
Dieser Code (basierend auf dem Mini-Tool aus der ersten Mail) schreibt eine zufällige ID in die Datei und konvertiert dabei die Basis-Infos zu Version 2.3 (Wichtig: Dabei können Infos verloren gehen. Zumindest sollte man die anderen Standard-Infos auch kopieren). Damit sollte dann auch die Chris-Datei, die du mir zuerst geschickt hast, vom WMP verstanden werden. Ob die zufällige ID dann reicht, oder ob doch irgendwo das Bild liegen muss .... keine Ahnung.
Delphi-Quellcode:
Procedure SetCoverpic;
var
MP3Tags, v23Tag: TId3v2Tag;
PicData: TMemorystream;
GUID: TMemorystream;
i: Integer;
b: Byte;
begin
MP3Tags:= TId3v2Tag.Create;
v23Tag := TId3v2Tag.Create;
PicData:= TMemoryStream.Create;
GUID := TMemorystream.Create;
try
If (MP3Tags.ReadFromFile(mp3File) = MP3ERR_None)
Then
begin
Picdata.LoadFromFile(Picfile);
// basic converting
v23Tag.Artist := MP3Tags.Artist;
v23Tag.Album := MP3Tags.Album;
v23Tag.Title := MP3Tags.Title;
for i := 1
to 16
do
begin
b := Random(255);
GUID.
Write(b, 1);
end;
v23Tag.SetPrivateFrame('
WM/WMCollectionID',
GUID);
v23Tag.SetPrivateFrame('
WM/WMCollectionGroupID',
GUID);
v23Tag.SetPicture('
image/jpeg', 0, '
*', PicData);
v23Tag.WriteToFile(mp3file);
end;
finally
FreeAndNIL(MP3Tags);
FreeAndNIl(PicData);
FreeAndNIl(
GUID);
FreeAndNIl(v23Tag);
end;
end;
The angels have the phone box.