JAVA-如何播放音频声音表示为float []或double []
我以字节读取音频文件,然后对音频字节[]进行FFT(作为低通滤波器),因此输出FFT是实数和虚数的双[]。 现在我想播放结果来听到声音。 如果我将播放一个字节[],我使用SourceDataLine。JAVA-如何播放音频声音表示为float []或double []
所以问题是,我怎么玩双[]?
感谢,
萨默尔萨米
我认为最好的办法是将其转换回的byte []。
您可以使用ByteArrayOutputStream
和DataOutputStream
来做到这一点。
ByteArrayOutputStream
one允许将流的内容作为字节数组进行检索,DataOutputStream
允许您向流写入双精度值。
是的,DataOutputStream将允许我写入文件,但它不会允许我直接播放它到扬声器... –
其实我的意思是你可以写入一个ByteArrayOutputStream,然后从中检索一个字节数组。尝试用数据输出流包装字节数组输出流。然后,如果保留对包装的ByteArrayOutputStream的引用,您将能够以字节数组的形式检索它。另请注意,ByteArrayOutputStream的内容将被放置在虚拟内存中,而不是放入文件中。 – Lynch
为了扩大对@林奇的回答,这显然是不适合的OP足够清晰:
byteStream = new ByteArrayOutputStream();
dataStream = new DataOutputStream(byteStream);
// write each element of your double[] to dataStream
dataStream.close();
byteStream.close();
byte[] audioBytes = byteStream.toByteArray();
是的,我的意思是这个。有时通过示例更容易理解。 – Lynch
你有没有解决这个问题?我意识到没有人给你解决你的问题。 –