C#自定义mp3标签与标签库



我正在尝试将自定义标记读写到MP3文件中。我在这里遵循了这个代码;使用tagLibsharp库添加自定义标签

我正在使用Visual Studio 2015,并已完成以下操作;使用NuGet安装了taglib sharp,在Visual Studio的包管理器控制台中运行以下命令。

PM>安装程序包标签库

然后添加了C#代码;

private void Write_Click(object sender, EventArgs e)
{
TagLib.Id3v2.Tag.DefaultVersion = 3;
TagLib.Id3v2.Tag.ForceDefaultVersion = true;
File f = File.Create(@"c:Boy.mp3"); 
TagLib.Id3v2.Tag t = (TagLib.Id3v2.Tag)f.GetTag(TagTypes.Id3v2);
PrivateFrame p = PrivateFrame.Get(t, "CustomKey", true);
p.PrivateData = System.Text.Encoding.Unicode.GetBytes("Sample Value");
f.Save();
f.Dispose();
}
private void Read_Click(object sender, EventArgs e)
{
File fa = File.Create(@"c:Boy.mp3");
TagLib.Id3v2.Tag ta = (TagLib.Id3v2.Tag)fa.GetTag(TagTypes.Id3v2);
PrivateFrame pa = PrivateFrame.Get(ta, "CustomKey", false);
string data = Encoding.Unicode.GetString(pa.PrivateData.Data);
MessageBox.Show(data);
}

现在,如果我单击Read_click,它将失败,这是意料之中的,因为我还没有编写自定义标记
如果我单击Write_click,文件修改日期会更改,但是我会得到一个ID3v1标记和原始ID3v2,但是如果我在Mp3Tag中打开文件,我看不到自定义标记。但如果我单击Read_click,它会显示值。

所以我很困惑;

  1. 为什么我得到ID3v1标签
  2. 为什么自定义标签在Mp3Tag中不可见
  3. 如果我在十六进制编辑器中打开文件,我看不到"样例值">

我做错了什么??

提前感谢的帮助

答案:

1:Taglib只保存ID3v2

2:据我所知,Mp3tag只显示"标准"ID3标签,但从不显示私有帧(https://forums.mp3tag.de/index.php?showtopic=4082)

3:如何搜索"样本值"?也许它是书面编码的?

最新更新