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

Posted

技术标签:

【中文标题】用 Java 读出 Mp3 歌曲的时间/长度/持续时间【英文标题】:Read out Time/Length/Duration of an Mp3 song in Java 【发布时间】:2010-06-29 13:19:15 【问题描述】:

我想知道如何读出一首 mp3 歌曲的时长。如果我是对的,它不是 ID3 标签,所以我想我必须以某种方式计算它? 对于其余的 ID3 标签,我正在使用这个库: http://javamusictag.sourceforge.net/index.html

干杯

【问题讨论】:

哦,是的,如果这很重要的话,我正在使用 JLayer 播放 mp3 How do I get a mp3 file's total time in Java?的可能重复 尝试使用jave-1.0.1.jar库:How do I get a mp3 file's total time in Java? 【参考方案1】:

我会将代码更改为...

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

【讨论】:

此方法不适用于此曲目:dropbox.com/s/735fdkp9roskapw/39007.mp3?dl=0 - 曲目为 3:52,但此代码为 22:17。 目前 .properties() 返回的 hashmap 甚至没有一个名为“duration”的键,至少我找不到。 @php_coder_3809625 - 对。这是我刚刚尝试过的 MP3 的属性映射的键。没有“持续时间”,也没有任何可以合理计算的东西:mp3.copyright, date, 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, album, author, mp3.id3tag.v2, mp3.vbr.scale, mp3.version.encoding, mp3.version.layer, mp3.id3tag.v2.version, mp3.header.pos, comment【参考方案2】:

您可以尝试使用基于 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 标签,这可能会为您节省额外的依赖。

【讨论】:

此方法不适用于此曲目:dropbox.com/s/735fdkp9roskapw/39007.mp3?dl=0 - 曲目为 3:52,但此代码为 22:17。【参考方案3】:

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

【讨论】:

以上是关于用 Java 读出 Mp3 歌曲的时间/长度/持续时间的主要内容,如果未能解决你的问题,请参考以下文章

从 mp3 id3v2 标签中识别歌曲信息

用扣扣音乐下载的VIP歌曲怎么转化成MP3格式?

HJ64 MP3光标位置(java详解)

如何以最少的下载量获取远程MP3的持续时间

Android中setDataSource()方法

为网站构建自定义 mp3 播放器 - 不知道如何编写播放上一首歌曲,播放下一首歌曲功能