2010-06-29 96 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