0

是否可以使用 TagLib# 将封面艺术存储在 Ogg Vorbis 文件的 Vorbis 注释标签的 METADATA_BLOCK_PICTURE 字段中?

4

1 回答 1

0

以下将起作用,但需要使用反射读取 Ogg Vorbis 文件对象的私有属性(“LastPageHeader”):

TagLib.Ogg.File oggFile = (TagLib.Ogg.File)TagLib.File.Create(@"C:\music.ogg");

PropertyInfo headerProp = oggFile.GetType()
                                 .GetProperty("LastPageHeader", BindingFlags.Instance | BindingFlags.NonPublic);
TagLib.Ogg.PageHeader header = (TagLib.Ogg.PageHeader)headerProp.GetValue(oggFile);

TagLib.Flac.Picture pic = new TagLib.Flac.Picture(new TagLib.Flac.Picture(@"C:\img.jpeg"));
TagLib.ByteVector picData = pic.Render();

TagLib.Ogg.GroupedComment groupedCommentTag = (TagLib.Ogg.GroupedComment)oggFile.Tag;

TagLib.Ogg.XiphComment xiphComment = groupedCommentTag.GetComment(header.StreamSerialNumber);
xiphComment.SetField("METADATA_BLOCK_PICTURE", Convert.ToBase64String(picData.Data));

oggFile.Save();
于 2015-02-22T06:03:49.413 回答