如何在Java中获取mp3文件的总时间?

汤姆·布里托:

如何使用Java获取声音文件的总时间中提供的答案适用于WAV文件,但不适用于mp3文件。

它们是(给定文件):

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long frames = audioInputStream.getFrameLength();
double durationInSeconds = (frames+0.0) / format.getFrameRate();  

和:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long audioFileLength = file.length();
int frameSize = format.getFrameSize();
float frameRate = format.getFrameRate();
float durationInSeconds = (audioFileLength / (frameSize * frameRate));

它们为wav文件提供相同的正确结果,但为mp3文件提供错误和不同的结果。

知道要获取mp3文件的持续时间该怎么办吗?

汤姆·布里托:

使用MP3SPI

private static void getDurationWithMp3Spi(File file) throws UnsupportedAudioFileException, IOException {

    AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
    if (fileFormat instanceof TAudioFileFormat) {
        Map<?, ?> properties = ((TAudioFileFormat) fileFormat).properties();
        String key = "duration";
        Long microseconds = (Long) properties.get(key);
        int mili = (int) (microseconds / 1000);
        int sec = (mili / 1000) % 60;
        int min = (mili / 1000) / 60;
        System.out.println("time = " + min + ":" + sec);
    } else {
        throw new UnsupportedAudioFileException();
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Windows Forms App中获取MP3文件的BPM属性

如何在PHP中使用ffmpeg从mp3文件中获取专辑图像

从脚本中的mp3文件中获取歌曲持续时间?

如何在flask中的html网页中播放mp3文件?

如何从Phonegap IOS中的www获取本地mp3文件的路径?

如何从Android的内部和外部存储中获取所有.mp3文件

如何在Qualtrics上使用Java脚本控制要播放的mp3文件?

如何在Java JMF中使用Socket编程流式传输Mp3文件

如何在Adobe Animate中为.mp3文件设置链接标签

如何在应用程序中快速流式传输mp3文件?

如何在php中混合/合并2个mp3文件?

如何在Matlab中从Dictionary.com下载MP3文件?

如何在Discord.py中的聊天中共享mp3文件

如何在Windows Phone 8中使用mp3文件?

如何在Android Studio中关联.mp3文件

如何在Python 3中以开始时间和结束时间播放MP3文件的最佳方法

如何在flutter中为api从record_mp3包上传mp3文件

如何在不对MP3进行再次转码的情况下,将已编码MP3文件的开头减少一秒的时间?

如何使用eyed3从python中的.mp3文件获取细节(标题,艺术家)

从MP3文件获取解码的字节流

如何使Rhythmbox显示串联的.mp3文件的正确时间长度?

如何列出前导时间段的mp3文件?

是否可以从mp3文件或文件输入流中获取位图(专辑封面)?

如何在node.js中将mp3文件更改为wav文件

如何在Android的简单播放器中从原始播放mp3文件?

如何在Android应用中更快地播放歌曲(mp3文件)

如何使用python获取mp3文件的采样率

在golang中获取/设置mp3文件的封面

从.mp3文件中获取“初始密钥”值