Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取声音文件&x27;Java中的总时间是多少?_Java_File_Audio - Fatal编程技术网

如何获取声音文件&x27;Java中的总时间是多少?

如何获取声音文件&x27;Java中的总时间是多少?,java,file,audio,Java,File,Audio,如何在Java中获取声音文件的总时间 --更新 看起来此代码不起作用: long audioFileLength=audioFile.length() 我知道如何获得文件长度,但我不知道如何获得声音文件的帧速率和帧大小。。。有什么想法或联系吗 --更新 还有一个工作代码(使用@mdma的提示): 给定一个文件,您可以编写 File file = ...; AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fil

如何在Java中获取声音文件的总时间

--更新

看起来此代码不起作用: long audioFileLength=audioFile.length()

我知道如何获得文件长度,但我不知道如何获得声音文件的帧速率和帧大小。。。有什么想法或联系吗

--更新

还有一个工作代码(使用@mdma的提示):


给定一个
文件
,您可以编写

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)