現在、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# では、まったく同じオーディオ プロパティが問題なく返されます。
どんなアイデアでも大歓迎です。ありがとう。
バウンティが終了する前に、他にアイデアはありますか?