我需要从AudioInputStream中获取值并将其存储在byte[]中。调用读(byte[])返回-1。如果我能够将值读取为整数,我可以将其转换为byte[]。我该如何解决这两个问题呢?
发布于 2014-03-04 07:42:08
如果要将声音数据存储在byte[]中,最好的方法就是根本不获取AudioInputStream。相反,只需使用普通的InputStream即可。
AudioInputStream通常从输入流中剥离第一个字节(因为它们包含格式化数据),然后只提供该流的框架或示例。另一方面,使用InputStream执行此操作时,您应该能够获得所有字节。然后,一旦整个数据都在一个字节数组中,就可以从字节数组(如果需要的话)形成一个AudioInputStream。
发布于 2014-02-28 13:20:05
已更新
使用apache文件读取字节。
InputStream is = -> your FileInputStream
ByteArrayOutputStream os = new ByteArrayOutputStream();
IOUtils.copy(is, os);
os.flush();
os.close();
byte[] ba = os.toByteArray();你不能直接把它读给ByteArrayOutputStream,否则你会得到
java.io.IOException: stream length not specified
at com.sun.media.sound.WaveFileWriter.write(Unknown Source)
at javax.sound.sampled.AudioSystem.write(Unknown Source)发布于 2016-08-28 10:20:11
很难理解您到底想要什么:带数据的字节数组或包含WAV文件的字节数组。只有声音数据的字节数组是一个非常简单的任务:从AudioInputStream复制到ByteArrayOutputStream。
第二种情况更为复杂。在这种情况下,您应该从AudioInputStream读取到ByteArrayOutputStream,然后形成波头。我可以给你举两个例子。我希望他们能帮助你。
如何将音频记录到字节数组 -它是记录音频到字节数组的例子,里面有波文件。
如何检测声音 -它展示了如何处理AudioInputStream。
https://stackoverflow.com/questions/22096166
复制相似问题