我目前正在将我的 C# 应用程序转移到 Qt/C++。我遇到了来自 TagLib 的长度问题。我觉得奇怪的是 TagLib# 以毫秒为单位返回音频持续时间,而 TagLib 以秒为单位返回其(不正确的)持续时间。TagLib 只为长度值返回零,而 TagLib# 保持正确。
这是我在 C#/TagLib# 中的源代码...
TagLib.File tagfile = TagLib.File.Create(path);
uint milliseconds = (uint)tagfile.Properties.Duration.TotalMilliseconds;
这就是 C++/TagLib 中应该几乎等价的内容。我什至强迫它准确地阅读。没有成功。
TagLib::FileName fn(path);
TagLib::FileRef fr(fn, true, TagLib::AudioProperties::Accurate);
uint length = fr.audioProperties()->length();
它对我的大部分媒体文件都按预期工作。但是,少数音频文件无法返回任何音频属性(标签信息的其余部分可以正常读取!)。在 TagLib# 上返回完全相同的音频属性,没有问题。
任何想法表示赞赏。谢谢。
在赏金结束之前,有人还有什么想法吗?