当前位置: 首页 > 面试题库 >

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

巢靖
2023-03-14
问题内容

如何使用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();
    }

}


 类似资料:
  • 问题内容: 如何使用Java获取声音文件的总时间? -更新 看起来这段代码确实起作用了:long audioFileLength = audioFile.length(); 我知道如何获取文件长度,但是我没有找到如何获取声音文件的帧频和帧大小…任何想法或链接吗? -更新 另一个工作代码(使用@mdma的提示): 问题答案: 给一个File你可以写

  • 我尝试了许多方法,但没有得到一个mp3文件的确切长度值。 随着电影: 我得到的结果是: 使用诱变剂: 我收到了另一个持续时间值: 使用windows media player打开文件时的实际持续时间值:2m49s 我不知道我的音频文件发生了什么,我测试了音乐网站上的一些文件,仍然得到了正确的值。这是我的音频文件

  • 问题内容: 如何在不创建MediaPlayer实例的情况下获得mp3曲目的持续时间?我只需要在mp3文件列表中显示mp3歌曲的长度,所以我认为我不应该为列表中的每个音轨创建MediaPlayer对象 还有一个: 有时MediaPlayer会返回错误的歌曲持续时间(我认为是错误的,因为这些文件的比特率是动态的)。如何获得正确的歌曲时长? 问题答案: 您可以使用MediaMetadataRetriev

  • 问题内容: 我使用以下代码实例化了一个对象: 如何获得此文件的大小? 是什么区别,和? 问题答案: 使用类中的方法。从javadocs: 返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则未指定返回值。 对于问题的第二部分,直接来自的javadocs: 返回此抽象路径名所命名的分区上该虚拟机可用的字节数 返回此抽象路径名命名的分区的大小 返回此抽象路径名所命名的分区中未分配的字节数

  • 问题内容: 我想拥有一个从MP3文件读取元数据的程序。我的程序还应该能够编辑这些元数据。我能做什么? 我必须搜索一些开源代码。但是他们有代码;但不是简化工作的想法。 当我进一步阅读时,发现元数据存储在MP3文件本身中。但是我还不能完全了解我的婴儿计划。 任何帮助将不胜感激; 一个程序或一个非常主意(例如算法)。:) 问题答案: mp3文件的最后128个字节包含有关mp3文件的元数据。,您可以编写一

  • 我想获取文件夹大小并重命名它,如果我的文件夹大小超过500 mbs然后重命名文件夹,下载到MusicDownload