如果这个问题已在本网站的某个地方得到解答,请原谅我,但在搜索时我没有找到任何内容。我使用taglib-sharp在C#中为.mp3文件编写了一个ID3v1 / 2标签编辑器,而taglib-sharp将轨道号视为uint数字。根据{{3}}:
“轨道编号/位置集合”框架是一个数字字符串 包含原始音频文件的订单号 记录。这可以用“/”字符和数字扩展 包含原始曲目/元素总数的字符串 记录。例如。 “4/9”。
我个人不使用“/”,但我倾向于写“03”而不是“3”。是否有一种简单的方法可以将轨道号直接写为字符串,而不是通过uint?
另外,附带问题:taglib似乎不支持某些标签,特别是URL,Orig。艺术家,出版商和编码。关于如何处理这些问题的任何想法?
答案 0 :(得分:1)
TagLib#中的Track字段是标签字段的各种标记规范的通用近似和简化。对于ID3v2标签,假设TRCK字段由一个或两个由斜杠分隔的数字字符串组成,并按照规范将它们转换为数字。
那就是说,它是一个文本字段,你可以用它做任何你想做的事情。您只需要访问文本框架即可读取或写入。
通过Id3v2.Tag.SetTextFrame
:
Id3v2.Tag tag = (Id3v2.Tag)file.GetTag(TagTypes.Id3v2, true); // Get or create ID3v2 tag.
tag.SetTextFrame(FrameType.TRCK, "03"); // Add or update TRCK frame.
阅读有点困难,因为GetTextAsString和GetTextAsArray便捷方法是私有的。 (我责怪没有好的作者。)幸运的是,这些方法非常轻巧,阅读如下。
Id3v2.Tag tag = (Id3v2.Tag)file.GetTag(TagTypes.Id3v2, false);
if (tag != null) {
TextInformationFrame trackFrame = TextInformationFrame.Get (tag, FrameType.TRCK, false);
if (trackFrame != null) {
string [] text = trackFrame.Text;
// Do something.
}
}
答案 1 :(得分:0)
如果不先将string
int
或uint
放入uint
或uint track = 3;
string strTrack = track.ToString("00");
,我就无法将其保存到{{1}}或{{1}}。为什么不按照您使用的库将{3}保存为{{1}}并使用以下内容:
{{1}}
显示它?
如果许可证允许,您仍然可以修改库以满足您的需求。
我过去很快就看过taglib sharp,它远远不支持标签中的所有现有帧。它仅支持最常见的帧。对于其他的,我认为你可以使用某种默认类,但我不记得这个名字。否则你仍然可以自己去扩展库,除非有其他可用的库,我不知道。