嘿编程社区。因此,我使用 TagLib Sharp 库从我的 .mp3 中获取元数据。除了一个异常(exception),一切都很顺利。我可以从我的 MP3 中读取评级,它们是整数(设置我的 Musicbee)。含义
Stars
5 = 255
4 = 196
3 = 128
2 = 64
1 = 1
unrated=0
我遇到的问题是我使用 MusicBee 可以设置半星评级。所以我应该从我的评级中获得的值(value)是:
Stars
5 = 255
4.5 = 224
4 = 196
3.5 = 160
3 = 128
2.5 = 96
2 = 64
1.5 = 48
1 = 1
unrated=0
但是,这就是 TagLib 正在读取的内容:
5 = 255
4.5 = 0
4 = 196
3.5 = 0
3 = 128
2.5 = 0
2 = 64
1.5 = 0
1 = 1
这是我用来获取评级的代码:
TagLib.File file = TagLib.File.Create(fi.FullName);
TagLib.Tag tag = file.GetTag(TagLib.TagTypes.Id3v2);
TagLib.Id3v2.PopularimeterFrame tagInfo = TagLib.Id3v2.PopularimeterFrame.Get((TagLib.Id3v2.Tag)tag, "Windows Media Player 9 Series", true);
byte rate = tagInfo.Rating;
//This is where I'm storing the value as a string to process it later
id3.Rating = tagInfo.Rating.ToString();
我的问题有两个。我应该/可以使用另一个 usr 来代替“Windows Media Player 9 Series”吗?或者是否有更好的方法可以从我的 mp3 中获取评级?我应该放弃 Musicbee 的半星评级吗?
另外,taglib 上有“帮助”文件吗?似乎我能找到的所有东西都可以在这里找到。我什至不知道我在上面的代码中将什么设置为“true”。
提前感谢您的帮助!
* 更新 * 这不仅仅是修复以下拼写错误的答案:
1 = 24 to
1 = 1
最佳答案
根据ID3v2(3)specification 、框架4.18 POPM的用途
... is to specify how good an audio file is. Many interesting applications could be found to this frame such as a playlist that features better audiofiles more often than others or it could be used to profile a person's taste and find other 'good' files by comparing people's profiles. The frame is very simple. It contains the email address to the user, one rating byte and a four byte play counter, intended to be increased with one for every time the file is played. The email is a terminated string. The rating is 1-255 where 1 is worst and 255 is best. 0 is unknown. If no personal counter is wanted it may be omitted.
我知道像 MediaMonkey 这样的程序使用此半星评级,但它们与规范不完全兼容。链接的 MediaMonkey 论坛帖子解释了他们如何计算半星。
您还可以在 Mp3tag 的文档中查找“RATING MM”。它讲述了评级的各种实现:http://help.mp3tag.de/main_tags.html
这个KODI thread显示他们如何计算它:
Values Rating
-----------------------
0 0 0
0.5 2-22 1
1 1, 23-31 2
1.5 32-63 3
2 64-95 4
2.5 96-127 5
3 128-159 6
3.5 160-195 7
4 196-223 8
4.5 224-254 9
5 255 10
关于使用 TagLib Sharp 的 C# - 评级编号错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252370/