2011-09-03 67 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