2011-09-03 66 views
0

我以字節讀取音頻文件,然後對音頻字節[]進行FFT(作爲低通濾波器),因此輸出FFT是實數和虛數的雙[]。 現在我想播放結果來聽到聲音。 如果我將播放一個字節[],我使用SourceDataLine。JAVA-如何播放音頻聲音表示爲float []或double []

所以問題是,我怎麼玩雙[]?

感謝,

薩默爾薩米

+0

你有沒有解決這個問題?我意識到沒有人給你解決你的問題。 –

回答

3

我認爲最好的辦法是將其轉換回的byte []。

您可以使用ByteArrayOutputStreamDataOutputStream來做到這一點。

ByteArrayOutputStream one允許將流的內容作爲字節數組進行檢索,DataOutputStream允許您向流寫入雙精度值。

+0

是的,DataOutputStream將允許我寫入文件,但它不會允許我直接播放它到揚聲器... –

+0

其實我的意思是你可以寫入一個ByteArrayOutputStream,然後從中檢索一個字節數組。嘗試用數據輸出流包裝字節數組輸出流。然後,如果保留對包裝的ByteArrayOutputStream的引用,您將能夠以字節數組的形式檢索它。另請注意,ByteArrayOutputStream的內容將被放置在虛擬內存中,而不是放入文件中。 – Lynch

2

爲了擴大對@林奇的回答,這顯然是不適合的OP足夠清晰:

byteStream = new ByteArrayOutputStream(); 
dataStream = new DataOutputStream(byteStream); 

// write each element of your double[] to dataStream 

dataStream.close(); 
byteStream.close(); 

byte[] audioBytes = byteStream.toByteArray(); 
+0

是的,我的意思是這個。有時通過示例更容易理解。 – Lynch