【问题标题】:Add custom tag in tagLib sharp在 tagLib 中添加自定义标签
【发布时间】:2017-10-14 12:54:16
【问题描述】:

我想将文本添加到自定义标签中,添加到 MP3 文件中。我尝试做like this,但我无法更改标签。

这是我现在的代码:

TagLib.File f = TagLib.File.Create(@"C:\Users\spunit\Desktop\denna.mp3");
TagLib.Id3v2.Tag t = (TagLib.Id3v2.Tag)f.GetTag(TagTypes.Id3v2);
PrivateFrame p = PrivateFrame.Get(t, "albumtype", true);
p.PrivateData = System.Text.Encoding.Unicode.GetBytes("TAG CHANGED");
f.Tag.Album = "test";
f.Save();

我改变了专辑标签,但没有改变专辑类型标签。我错过了什么吗?

【问题讨论】:

  • 有人吗?我还没有让这个工作。
  • 还是没有想法? =(
  • 所以要澄清一下,您需要更改(而不是添加)“albumtype”标签,它不适用于提供的代码,而更改“album”标签有效?
  • 我猜都更改或添加(我想将其设置为一些文本)。无论哪种方式,它什么都不做。更改或添加“专辑”标签始终有效。

标签: c# forms taglib-sharp


【解决方案1】:

不幸的是,Id3v2 有一个不允许自定义标签的集合规范,如定义 here

您从another question 引用的代码确实有效,您只需要包含读取器方法即可返回私有帧数据。

另请参阅 Unix Stack Exchange 上的 this question,其中有人遇到了同样的问题 - 另一种解决方案可能是使用 UserDefinedText 标记。

【讨论】:

  • 所以...不可能吗?但我可以在名为 foobar2000 的程序中更改和设置 mp3 文件的自定义标签。这是我的一些自定义标签的屏幕截图:imgur.com/ksAoZ7D 这些是我希望能够在 C# 中更改的标签。
  • @spunit 请参阅 foobar2000 论坛上的 this thread - 所有非本地支持的字段名称都存储在 UserDefinedText 字段中,它们没有自己的自定义标签。
  • 哦,我明白了,这就是它的工作原理。然后添加/更改 UserDefinedText 就是我想要做的。你知道如何在 C# 中做到这一点吗?
  • UserDefinedText 是 TXXX 帧,所以 t.SetTextFrame("TXXX", "Your info"); 应该可以工作
  • 真的很奇怪...一定是我出了问题...无论如何,非常感谢您的帮助,感谢您所有的时间和精力。我会竖起大拇指并接受你的回答=)
【解决方案2】:

TagLib 允许按照定义的here 设置自定义标头。

var tfile = TagLib.File.Create(@"C:\My song.flac");
var custom = (TagLib.Ogg.XiphComment) tfile.GetTag(TagLib.TagTypes.Xiph);

// Read
string [] myfields = custom.GetField("MY_TAG");
Console.WriteLine("First MY_TAG entry: {0}", myfields[0]);

// Write
custom.SetField("MY_TAG", new string[] { "value1", "value2" });
custom.RemoveField("OTHER_FIELD");
rgFile.Save();

【讨论】:

    猜你喜欢
    • 2016-04-03
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多