2012-10-31 45 views
2

誰能告訴我如何從一個音頻文件(.AU)讀取存儲音頻數據轉換爲字節數組?我查看了Oracle上的Java文檔,但是我不知道如何使用這些信息來編寫程序。Java如何將音頻數據存儲在字節數組中。

+1

使用[FileInputStream](http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html)。 – Vulcan

回答

3

我被「音頻數據」猜你想從AU文件中的音頻樣本不包括報頭信息和元數據。如果您只是想將文件的內容加載到內存中,請按照建議使用FileInputStream。

否則,讀取樣本時,可以使用AudioSystem和。

File myFile = new File("test.au"); 
byte[] samples; 

AudioInputStream is = AudioSystem.getAudioInputStream(myFile); 
DataInputStream dis = new DataInputStream(is);  //So we can use readFully() 
try 
{ 
    AudioFormat format = is.getFormat(); 
    samples = new byte[(int)(is.getFrameLength() * format.getFrameSize())]; 
    dis.readFully(samples); 
} 
finally 
{ 
    dis.close(); 
} 
+0

你好,我一直在使用上面的代碼嘗試,但我一直「在線程異常‘主讓’java.io.FileNotFoundException:auSample.au(系統找不到指定的文件),」雖然我在正確的文件夾中的音頻文件。是否需要對代碼進行這些更改,或者僅僅是我錯誤地鏈接了文件。 – Estra

+0

嘗試在文件名中使用絕對路徑。此外,如果文件名是字符串文字,則需要在文件名中轉義任何反斜槓。例如'新的文件(「C:\\ \\溫度sample.au」);' – prunge

+0

你好,我曾嘗試絕對路徑,但它並沒有出於某種原因。我用過ClassLoader.getResource();現在它工作。謝謝您的幫助 – Estra