TagLib#(C#)和TagLib(C++)中的长度差异

joc*_*ull 3 c# c++ taglib taglib-sharp

我目前正在将我的C#应用​​程序转移到Qt/C++.我遇到TagLib的长度问题.我发现奇怪的是TagLib#以毫秒为单位返回音频持续时间,而TagLib以秒为单位返回其(不正确)持续时间.TagLib只为长度值返回,而TagLib#保持正确.

这是我在C#/ TagLib中的来源#...

TagLib.File tagfile = TagLib.File.Create(path);
uint milliseconds = (uint)tagfile.Properties.Duration.TotalMilliseconds;
Run Code Online (Sandbox Code Playgroud)

这里应该是C++/TagLib中几乎相同的东西.我甚至强迫它准确阅读.没有成功.

TagLib::FileName fn(path);
TagLib::FileRef fr(fn, true, TagLib::AudioProperties::Accurate);
uint length = fr.audioProperties()->length();
Run Code Online (Sandbox Code Playgroud)

它对我的大多数媒体文件都有预期的效果.但是,选择的几个音频文件无法返回任何音频属性(标签信息的其余部分读取正常!).返回完全相同的音频属性,TagLib#没有问题.

任何想法都表示赞赏.谢谢.

在赏金结束之前,有没有人有更多的想法?

Lui*_* R. 5

嗨有一个taglib的补丁计算长度,以毫秒为单位,这个人添加了一个方法(lengthMilliseconds()),返回长度(以毫秒为单位),这可能对您有用:http://web.archiveorange.com/archive / v/sF3Pjr01lSQjsqjrAC7L