2010-06-09 80 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