2010-06-09 76 views
11

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

--update

看起来这个代码去工作: 长audioFileLength = audioFile.length();

recordedTimeInSec = audioFileLength/(frameSize * frameRate); 

我知道如何获得文件长度,但我没有找到如何获得声音文件的帧速率和帧大小......任何想法或链接?

- UPDATE

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

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)); 
+0

哪个JAR文件您使用的呢? – 2014-12-05 12:46:54

回答

17

给出一个File你可以写

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

我正在尝试运行此代码,但我没有找到如何获取声音文件的帧速率。你有没有参考它? – 2010-06-10 14:25:44

+0

我更新了代码。 – mdma 2010-06-10 14:33:30

+0

我没有什么错,但是对于18秒的文件,您的代码会生成结果149120,而我在问题中发布的新代码会生成18.64275(以秒为单位的正确大小)。无论如何,如果没有提示,我不会这么做,谢谢! – 2010-06-10 15:17:53