gpt4 book ai didi

java - AudioInputStream.getFrameLength 返回错误的长度

转载 作者:行者123 更新时间:2023-11-30 06:33:23 26 4
gpt4 key购买 nike

我试图在 Java 中获取音频文件的持续时间。

我编写了这段代码(在 stackoverflow 的帮助下):

public static Duration getDuration(File file) {
AudioInputStream audioInputStream =
AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long frames = audioInputStream.getFrameLength();
double durationInSeconds = (frames) / format.getFrameRate();
return Duration.ofSeconds(Math.round(durationInSeconds));
}

我在 pom 文件中添加了一些音频库,以便能够获取正确的 audioInputStream (com.googlecode.soundlibs.basicplayer)。

但是,当我尝试从类路径加载一些 mp3 时,audioInputStream.getFrameLength 始终返回 -1 值。

有人遇到同样的问题吗?

谢谢

最佳答案

最后,它与以下代码一起工作

public static Duration getDuration(File file) {
val audioInputStream = AudioSystem.getAudioInputStream(file);
val fileFormat = AudioSystem.getAudioFileFormat(file);
long frames = fileFormat.getFrameLength(); // I get the frame length from file format, not InputStream
val format = audioInputStream.getFormat();
double durationInSeconds = (frames) / format.getFrameRate();
return Duration.ofSeconds(Math.round(durationInSeconds));
}

内部 getAudioInputStream 应该执行此操作,但它不起作用,所以我必须自己执行此操作。

关于java - AudioInputStream.getFrameLength 返回错误的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45634143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com