带有 tagLib 锐库的 C# 自定义 mp3 标签

Posted

技术标签:

【中文标题】带有 tagLib 锐库的 C# 自定义 mp3 标签【英文标题】:C# Custom mp3 tag with tagLib sharp library 【发布时间】:2016-06-12 13:40:38 【问题描述】:

我正在尝试读取自定义标签并将其写入 MP3 文件。我在这里遵循了这段代码; adding custom tag using tagLib sharp library

我正在使用 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 它会显示该值。

所以我很困惑;

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

我做错了什么??

提前感谢您的帮助

【问题讨论】:

【参考方案1】:

答案:

1:Taglib sharp saving ONLY ID3v2

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

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

【讨论】:

以上是关于带有 tagLib 锐库的 C# 自定义 mp3 标签的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义语音 mp3 文件的 Android 通话

使用 TagLib 读取 MP3 等级

使用 taglib# 提取 mp3 标签

TagLib - 从 MP3 中提取专辑封面 (Powershell)

使用 TagLib 时如何读取音频 (mp3) 标签(时长和字幕)?

使用 TagLib 从 MP3 文件中提取专辑封面 - 有没有更好的方法编写此代码?