如何使用时间跨度显示歌曲的最长持续时间?
在我的音乐播放器中,有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?
我突然发现关于使用的ToString语法标记库,类似于像我一样的标签1.现在,它的工作原理如我所料,显示仅仅只有分秒的想法。
这是我使用的代码:
lblTime2.Content=tagFile.Properties.Duration.ToString(@"mm\:ss");
首先,要从歌曲(或文件)中检索持续时间,请参阅此012帖子; How to read audio (mp3) tags (Duration and Subtitle), when I use TagLib?
根据taglib文档(我发现有点混淆) - 请参阅this API page - lengthInSeconds
属性返回一个整数。
因此,要在你的标签上显示它,试试这个。
var vFile = TagLib.File.Create(@"xyz.mp3");
int vDuration = vFile.Properties.lengthInSeconds;
lblTime2.Content = TimeSpan.FromSeconds(vDuration).ToString(@"hh\:mm");
(所有未经测试!)
感谢您的回答。但不幸的是,我得到一个错误,说属性不包含lengthInSeconds的定义,并且没有扩展方法lengthInSeconds接受属性类型的第一个参数。 –
我在下面回答我自己的问题。感谢您的灵感。 –
是的,正如我所说的,API描述有些令人困惑,我没有时间去浏览所有内容!至少你已经把它全部整理出来了。 – Grim
TimeSpan.MaxValue是恒定值,并且表示一个时间跨度可以处理的最大值。 –
感谢您的解释。那么,我必须改正标签2才能显示播放歌曲的最长持续时间(例如05:42)? –
从歌曲中获取持续时间信息 –