使用tagLib sharp library添加自定义标记

是否可以使用TagLib# libary将自定义标签(例如“SongKey:Em”)添加到mp3文件中?

您可以通过在自定义(专用)帧中写入数据来为MP3添加自定义标签。

但首先:

如果使用ID3v1,则必须切换到ID3v2。 任何版本的ID3v2都可以,但与大多数东西兼容的版本是ID3v2.3

所需的使用指令:

using System.Text; using TagLib; using TagLib.Id3v2; 

创建私有框架:

 File f = File.Create(""); // Remember to change this... TagLib.Id3v2.Tag t = (TagLib.Id3v2.Tag)f.GetTag(TagTypes.Id3v2); // You can add a true parameter to the GetTag function if the file doesn't already have a tag. PrivateFrame p = PrivateFrame.Get(t, "CustomKey", true); p.PrivateData = System.Text.Encoding.Unicode.GetBytes("Sample Value"); f.Save(); // This is optional. 

在上面的代码中:

  • ""更改为MP3文件的路径。
  • "CustomKey"更改为您想要密钥的名称。
  • "Sample Value"更改为您要存储的任何数据。
  • 如果您有自定义保存方法,则可以省略最后一行。

阅读私人框架:

 File f = File.Create(""); TagLib.Id3v2.Tag t = (TagLib.Id3v2.Tag)f.GetTag(TagTypes.Id3v2); PrivateFrame p = PrivateFrame.Get(t, "CustomKey", false); // This is important. Note that the third parameter is false. string data = Encoding.Unicode.GetString(p.PrivateData.Data); 

在上面的代码中:

  • ""更改为MP3文件的路径。
  • "CustomKey"更改为您想要密钥的名称。

读写之间的区别是PrivateFrame.Get()函数的第三个布尔参数。 在阅读时,你会传递false ,而在写作时你会传递true

附加信息:

由于byte[]可以写入帧,不仅可以写入文本,而且几乎任何对象类型都可以保存在标记中,前提是您可以正确转换(并在读取时转换回来)数据。

要将任何对象转换为byte[] ,请参阅此答案 , 该答案使用Binary Formatter来执行此操作。