2016-06-12 88 views
0

我正在尝试将自定义标签读取并写入MP3文件。我在这里遵循这个代码; adding custom tag using tagLib sharp libraryC#使用tagLib sharp库的自定义mp3标签

我使用的是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. 如果我打开一个十六进制编辑器文件,我看不到“采样值”

我在做什么错?

在此先感谢您的帮助

回答