使用 TagLib Sharp 的 C# - 评级编号错误?

标签 c# taglib-sharp

嘿编程社区。因此,我使用 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/

相关文章:

c# - 无法使用 Visual Studio 2013 中的 F5 进行调试,模块窗口为空

c# - ASP.NET 4.0 中的代码访问安全性和动态数据错误

c# - 如何让 TagLib# 处理扩展名错误的文件?

powershell - 使用 taglib-sharp 和 Powershell 更新歌曲元数据

c# - 使用 GUID 和 Entity Framework

c# - PetaPoco 未返回预期数据

c# - Visual Studio 停止运行我的程序

c# - 使用 taglib# 提取 mp3 标签

c# - 在 tagLib sharp 中添加自定义标签

c# - 使用 TagLibSharp 读取 APEv2 mp3 标签?