c# - 专辑插图未编码

标签 c# visual-studio-2010 taglib id3-tag

尝试创建一个供个人使用的 mp3 嵌入器。尝试了 StackO 上的所有解决方案,但没有一个奏效。

这是我的:

TagLib.File tagFile = TagLib.File.Create("C:\\Users\\Dom\\Desktop\\song.mp3");
TagLib.Id3v2.AttachedPictureFrame pic = new TagLib.Id3v2.AttachedPictureFrame();
pic.TextEncoding = TagLib.StringType.Latin1;
pic.MimeType = System.Net.Mime.MediaTypeNames.Image.Jpeg;
pic.Type = TagLib.PictureType.FrontCover;
pic.Data = TagLib.ByteVector.FromPath("C:\\Users\\Dom\\Pictures\\picture.png");
tagFile.Tag.Pictures = new TagLib.IPicture[1] { pic };
tagFile.Tag.Album = "Album 1";
tagFile.Tag.Year = 1990;
tagFile.Save();   

专辑标签和年份标签在属性下显示正常,程序没有崩溃或抛出任何错误。图片未显示为文件图标,也未显示在 Windows Media Player 中。图片大小为 300x300 像素(如果有的话)。

最佳答案

原因可能是与现有的 ID3v2 标签有一些冲突。像这样修复它:

    TagLib.File tagFile = TagLib.File.Create("C:\\Users\\Dom\\Desktop\\song.mp3"); 
    Tag t = tagFile.GetTag(TagTypes.Id3v2);
    tagFile.RemoveTags(TagTypes.Id3v2); 
    Tag tags = tagFile.GetTag(TagTypes.Id3v2);
    tagFile.GetTag(TagTypes.Id3v2, true); 
    tagFile.Save();
    tagFile = TagLib.File.Create("C:\\Users\\Dom\\Desktop\\song.mp3"); 
    tags = t;

    tagFile.GetTag(TagTypes.Id3v2).Pictures = new IPicture[] { 
    new Picture("C:\\Users\\Dom\\Pictures\\picture.png") 
       { MimeType = "image/png", Type = PictureType.FrontCover } 
    };
    tagFile.Tag.Album = "Album 1";
    tagFile.GetTag(TagTypes.Id3v2).Track = 0;
    tagFile.Tag.Year = 1990;
    tagFile.Save();

关于c# - 专辑插图未编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486404/

相关文章:

c++ - 如何将控制台输出数据输入命令提示符?

grails - GSP包含-带参数-在g:内?

c# - 您能否使您的 UI 功能可重用?

c# - UNIX和Windows开发的区别

c# - 在 Visual Studio 2010 中自动格式化 lambda 函数

java - 数据表if else语句显示

jsf - 以编程方式注册 taglib 引用

c# - 三元运算符如何工作?

C#读取文件并写出替换字符串

visual-studio-2010 - Resharper 与 Visual Studio 2010 的比较