0

我正在尝试将自定义标签读取并写入 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 它会显示该值。

所以我很困惑;

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

我究竟做错了什么??

在此先感谢您的帮助

4

1 回答 1

0

答案:

1:Taglib 锐利保存仅 ID3v2

2:据我所知,Mp3tag 只显示“标准”ID3 标签,但从不显示私人框架(https://forums.mp3tag.de/index.php?showtopic=4082

3:如何搜索“样本值”?也许它是写编码的?

于 2016-06-13T13:06:51.030 回答