我正在尝试将自定义标签读取并写入 MP3 文件。我在这里遵循了这段代码;使用 tagLib 锐利库添加自定义标签
我正在使用 Visual Studio 2015 并完成了以下操作;使用 NuGet 安装 taglib-sharp,在 Visual Studio 的包管理器控制台中运行以下命令。
PM> Install-Package taglib
然后添加了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 它会显示该值。
所以我很困惑;
- 为什么我得到 ID3v1 标签
- 为什么自定义标签在 Mp3Tag 中不可见
- 如果我在十六进制编辑器中打开文件,我看不到“样本值”
我究竟做错了什么??
在此先感谢您的帮助