2017-06-03 127 views
0

在我的音樂播放器中,有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?

+1

TimeSpan.MaxValue是恆定值,並且表示一個時間跨度可以處理的最大值。 –

+0

感謝您的解釋。那麼,我必須改正標籤2才能顯示播放歌曲的最長持續時間(例如05:42)? –

+1

從歌曲中獲取持續時間信息 –

回答

0

我突然發現關於使用的ToString語法標記庫,類似於像我一樣的標籤1.現在,它的工作原理如我所料,顯示僅僅只有分秒的想法。

這是我使用的代碼:

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

首先,要從歌曲(或文件)中檢索持續時間,請參閱此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"); 

(所有未經測試!)

+0

感謝您的回答。但不幸的是,我得到一個錯誤,說屬性不包含lengthInSeconds的定義,並且沒有擴展方法lengthInSeconds接受屬性類型的第一個參數。 –

+0

我在下面回答我自己的問題。感謝您的靈感。 –

+0

是的,正如我所說的,API描述有些令人困惑,我沒有時間去瀏覽所有內容!至少你已經把它全部整理出來了。 – Grim