如何获取声音文件&x27;Java中的总时间是多少?
如何在Java中获取声音文件的总时间 --更新 看起来此代码不起作用: long audioFileLength=audioFile.length() 我知道如何获得文件长度,但我不知道如何获得声音文件的帧速率和帧大小。。。有什么想法或联系吗 --更新 还有一个工作代码(使用@mdma的提示):如何获取声音文件&x27;Java中的总时间是多少?,java,file,audio,Java,File,Audio,如何在Java中获取声音文件的总时间 --更新 看起来此代码不起作用: long audioFileLength=audioFile.length() 我知道如何获得文件长度,但我不知道如何获得声音文件的帧速率和帧大小。。。有什么想法或联系吗 --更新 还有一个工作代码(使用@mdma的提示): 给定一个文件,您可以编写 File file = ...; AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fil
给定一个
文件
,您可以编写
File file = ...;
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long frames = audioInputStream.getFrameLength();
double durationInSeconds = (frames+0.0) / format.getFrameRate();
这是一个简单的方法:
FileInputStream fileInputStream = null;
long duration = 0;
try {
fileInputStream = new FileInputStream(pathToFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
duration = Objects.requireNonNull(fileInputStream).getChannel().size() / 128;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(duration)
我不知道是怎么回事,但是如果文件长度为18秒,您的代码生成的结果为149120,而我在问题中发布的新代码生成的结果为18.64275(以秒为单位的正确大小)。不管怎样,如果没有提示,我是不会这么做的,谢谢@mdma:你能帮我回答我的问题吗com.sun.media.sound.RIFFInvalidDataException:块大小太大了,你用哪个jar文件?
File file = ...;
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long frames = audioInputStream.getFrameLength();
double durationInSeconds = (frames+0.0) / format.getFrameRate();
FileInputStream fileInputStream = null;
long duration = 0;
try {
fileInputStream = new FileInputStream(pathToFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
duration = Objects.requireNonNull(fileInputStream).getChannel().size() / 128;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(duration)