用Java读取Mp3歌曲的时间/长度/持续时间

用Java读取Mp3歌曲的时间/长度/持续时间,java,audio,mp3,Java,Audio,Mp3,我不知道怎样才能读出mp3歌曲的持续时间。如果我是对的,它不是ID3标记,所以我想我必须以某种方式计算它? 对于其余的ID3标记,我使用以下库: 干杯使用一些MP3库。MP3格式并不是那么容易,因为有一些简单的方法可以读出歌曲的长度。您可以尝试使用基于JLayer的MP3格式。然后,以下代码将允许您获取歌曲持续时间: File file = new File("filename.mp3"); AudioFileFormat baseFileFormat = AudioSystem.getAud

我不知道怎样才能读出mp3歌曲的持续时间。如果我是对的,它不是ID3标记,所以我想我必须以某种方式计算它? 对于其余的ID3标记,我使用以下库:


干杯

使用一些MP3库。MP3格式并不是那么容易,因为有一些简单的方法可以读出歌曲的长度。

您可以尝试使用基于JLayer的MP3格式。然后,以下代码将允许您获取歌曲持续时间:

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

您还可以使用MP3SPI获取ID3标记,这可能会为您节省额外的依赖项。

我会将代码更改为

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

用于使用
新MpegAudioFileReader()
而不是
音响系统
,因为我得到了一个
不支持的数据文件,发生了异常:文件不是mp3文件支持的文件类型

哦,是的,我正在使用JLayer播放mp3,如果这很重要的话,可能会重复使用
jave-1.0.1.jar
库:此方法不适用于此曲目:-曲目有3:52,但是这段代码说它有22:17。目前,.properties()返回的hashmap甚至没有一个名为“duration”的键,至少我找不到。@php\u coder\u 3809625-对。这是我刚试过的MP3属性图的键。没有“持续时间”,也没有任何可以合理计算的内容:
mp3.版权,日期,mp3.framesize.bytes,mp3.vbr,mp3.framerate.fps,mp3.id3tag.track,title,mp3.channels,mp3.id3tag.genre,mp3.bitrate.nominal.bps,mp3.padding,mp3.version.mpeg,mp3.crc,mp3.original,mp3.frequency.hz,唱片集,作者,mp3.id3tag.v2,mp3.vbr.scale、mp3.version.encoding、mp3.version.layer、mp3.id3tag.v2.version、mp3.header.pos、comment
此方法不适用于此曲目:-此曲目有3:52,但此代码表示它有22:17。