使用TagLib-Sharp编辑mp3的id3v2标签时Comment属性修改无效如何解决
问题原因
ID3v2标准中评论(COMM)帧支持多语言、多描述字段的多条评论,TagLib#默认的Tag.Comment属性写入的COMM帧不符合Windows资源管理器的读取规则,因此修改属性后不会在资源管理器的评论字段中显示。
修复方案
直接手动构造符合Windows读取规则的COMM帧即可,完整代码如下:
var file = TagLib.File.Create(myFile.FullName); // 第二个参数为true表示如果文件不存在ID3v2标签则自动创建 TagLib.Id3v2.Tag tag = (TagLib.Id3v2.Tag)file.GetTag(TagTypes.Id3v2, true); // 先移除所有现有COMM帧,避免旧标签冲突 tag.RemoveFrames("COMM"); // 手动构造COMM帧,参数依次为:帧描述(留空才能被Windows识别)、编码格式、3位语言编码(固定为eng) var commentFrame = new TagLib.Id3v2.CommentsFrame("", TagLib.StringType.UTF16, "eng"); commentFrame.Text = link; tag.AddFrame(commentFrame); // 其余标签正常赋值 tag.Title = songname; tag.Performers = artists; // 保存时指定使用ID3v2.4版本写入,兼容性最好 file.Save(new TagLib.Id3v2.Tag.SaveOptions { WriteVersion = 4 });
注意事项
- 选择
StringType.UTF16编码可以避免链接含特殊字符时出现乱码,Windows资源管理器对该编码的兼容性最优 - 修改完成后如果没有立刻看到效果,刷新资源管理器窗口或重新打开文件属性页即可生效
内容的提问来源于stack exchange,提问作者hudriwudi
相关产品推荐
相关产品推荐

