2010-06-29 97 views
1

我想知道如何讀出mp3歌曲的持續時間。如果我是對的,它不是一個ID3標籤,所以我想我必須以某種方式計算它? 對於ID3標籤的其餘部分我使用這個libary: http://javamusictag.sourceforge.net/index.html在Java中讀出Mp3歌曲的時間/長度/持續時間

乾杯

+0

哦,是我使用JLayer播放MP3如果這事很重要 – Timothy 2010-06-29 13:23:52

+0

可能的重複[如何獲得一個MP3文件的Java總時間?](http://stackoverflow.com/questions/3046669/how-do-i-get-a-mp3-files -total-time-in-java) – 2014-12-18 14:46:33

回答

3

我會改變代碼...

File file = new File("filename.mp3"); 
AudioFileFormat baseFileFormat = new MpegAudioFileReader().getAudioFileFormat(file); 
Map properties = baseFileFormat.properties(); 
Long duration = (Long) properties.get("duration"); 

使用MP3SPI使用new MpegAudioFileReader()代替AudioSystem,因爲我是越來越有MP3文件的UnsupportedAudioFileException occured : file is not a supported file type

+0

此方法不適用於此曲目:https://www.dropbox.com/s/735fdkp9roskapw/39007.mp3?dl=0 - 曲目有3:52,但此代碼是22:17。 – 2014-12-18 14:47:07

+1

當前由.properties()返回的hashmap甚至沒有一個名爲「duration」的鍵,至少我沒有找到。 – 2016-05-03 13:55:24

+0

將無法​​正常工作... – AlwaysConfused 2016-11-06 15:35:56

0

使用一些MP3庫。 MP3格式不是那麼容易,只有一些簡單的方法來讀出歌曲的長度。

+1

那麼我已經在使用JLayer – Timothy 2010-06-29 13:28:27

0

您可以嘗試使用基於JLayer的MP3SPI。然後下面的代碼將讓你得到這首歌時長:

File file = new File("filename.mp3"); 
AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(file); 
Map properties = baseFileFormat.properties(); 
Long duration = (Long) properties.get("duration"); 

您還可以使用MP3SPI得到處可爲您節約額外的依賴ID3標籤。

+0

這種方法不適用於此曲目:https://www.dropbox.com/s/735fdkp9roskapw/39007.mp3?dl=0 - 曲目有3:52,但此代碼是22:17。 – 2014-12-18 14:47:51