taglib-sharp中是否有Label/Publisher的等效字段?我正在尝试使用Taglib-sharp更新标签/发布者字段,但我无法使用对象浏览器在其对象层次结构中的任何位置看到它。我搜索了谷歌和文档,它看起来像一个没有被照顾的区域。在我寻找可以编辑这些字段的替代方案之前(有人可以建议吗?),我想我会进行最后一次破解并在StackOverflow社区中询问熟悉TagLib-sharp的人以获得更明智的意见?在此先感谢FrancisUpdate:我研究过其他库,如mpg123和UltraID3Lib,但它们似乎具有相同的限制。好吧,DanielFuchs的回答对我不起作用。然而,这是一个开始。在TagLib-sharp代码中添加字段的步骤是:下载源代码打开文件TagLib/Tag.cs??插入如下代码(我插入到PerformersSort,下面250行):publicvirtualstringPublisher{get{返回””;}set{}}打开文件TagLib/Id3v2/Tag.cs??并插入以下代码(我将其插入到PerformersSort下方,第1292行):publicoverridestringPublisher{get{returnGetTextAsString(FrameType.TPUB);}set{SetTextFrame(FrameType.TPUB,value);打开文件TagLib/Id3v2/FrameTypes.cs并插入以下代码(我将其插入到TPOS下方,第71行):publicstaticreadonlyReadOnlyByteVectorTPUB="TPUB";现在来了“啊哈”的事情。打开文件TagLib/CombinedTag.cs??并插入以下代码(我将其插入到PerformersSort下方,第318行):字符串值=tag.Publisher;如果(值!=null)返回值;}返回空值;}set{foreach(Tagtagintags)if(tag!=null)tag.Publisher=value;}}最后,编译代码。重要说明:我在编译代码时遇到问题。您必须下载SharpZipLibdll(.NET2.0)并将此dll包含在您的taglib项目中。另外,我需要安装我用Nuget制作的NUnit。最后,我在测试代码中注释了GDK库及其所有错误,因为在生产中不会使用它。那么TagLib#无法读取发布者标签。到目前为止,即使是最新版本(2.1.0.0)也无法做到这一点。或者,您可以使用免费提供的TagLib#源代码自行添加此功能。为此,打开文件TagLib/Id3v2/FrameTypes.cs并在某处添加以下行:publicstaticreadonlyReadOnlyByteVectorTPUB="TPUB";//Publisher字段在TagLib/Id3v2/Tag.cs??文件中:publicstringPublisher{get{returnGetTextAsString(FrameType.TPUB);}set{SetTextFrame(FrameType.TPUB,value);}}然后就可以访问了发布者字段使用类似TagLib.Filetf=TagLib.File.Create(...);//打开文件tf.Tag.Publisher="LabelXY";//写新的发布者tf.Save();//保存标签请注意,这是一个丑陋的hack,但适用于MP3文件。我不习惯TagLib#,但我在Qt项目中使用TagLib,我在其中检索这些信息并检查TagLib::File::properties。查看文档,它只是一个包含每个属性和值的字符串映射。希望TagLib#有这个方法。以上是C#学习教程:taglib-sharp中是否有Label/Publisher的等价字段?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
