如何使用时间跨度显示歌曲的最大持续时间?

How to display the maximum duration of a song using timespan?

在我的音乐播放器中,有 2 个标签。

标签1用于显示进度时间:

lblTime.Content = TimeSpan.FromSeconds(sliProgress.Value).ToString(@"mm\:ss");

而标签 2 用于显示歌曲的最长持续时间:

lblTime2.Content = TimeSpan.MaxValue.ToString(@"mm\:ss");

标签 1 从开始播放到我移动滑块时都运行良好。但是标签 2 不知何故没有显示任何内容。我尝试在 taglib-sharp 中使用 Properties.Duration 语法。但对我来说,它显示了太多细节,因为我只想显示分钟和秒,而不是小时甚至毫秒。

我应该如何修复标签 2?

首先,要从歌曲(或文件)中检索持续时间,请参阅此 所以post; How to read audio (mp3) tags (Duration and Subtitle), when I use TagLib?

根据 taglib 文档(我觉得有点混乱)- 参见 this API page - lengthInSeconds 属性 returns 一个整数。

所以,要在您的标签上显示它,试试这个。

var vFile = TagLib.File.Create(@"xyz.mp3");
int vDuration = vFile.Properties.lengthInSeconds;
lblTime2.Content = TimeSpan.FromSeconds(vDuration).ToString(@"hh\:mm");

(全部未经测试!)

我突然想到了一个关于将 ToString 语法用于 taglib 的想法,类似于我对标签 1 所做的。现在它按我预期的那样工作,只显示分钟和秒。

这是我使用的代码:

lblTime2.Content=tagFile.Properties.Duration.ToString(@"mm\:ss");