4

個人用の 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 ピクセルです。

4

1 に答える 1

2

その理由は、おそらく既存の 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();
于 2015-11-06T21:27:33.707 に答える