首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioInputStream到数组

AudioInputStream到数组
EN

Stack Overflow用户
提问于 2014-02-28 13:12:38
回答 3查看 4K关注 0票数 1

我需要从AudioInputStream中获取值并将其存储在byte[]中。调用读(byte[])返回-1。如果我能够将值读取为整数,我可以将其转换为byte[]。我该如何解决这两个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-04 07:42:08

如果要将声音数据存储在byte[]中,最好的方法就是根本不获取AudioInputStream。相反,只需使用普通的InputStream即可。

AudioInputStream通常从输入流中剥离第一个字节(因为它们包含格式化数据),然后只提供该流的框架或示例。另一方面,使用InputStream执行此操作时,您应该能够获得所有字节。然后,一旦整个数据都在一个字节数组中,就可以从字节数组(如果需要的话)形成一个AudioInputStream

票数 2
EN

Stack Overflow用户

发布于 2014-02-28 13:20:05

已更新

使用apache文件读取字节。

代码语言:javascript
复制
        InputStream is = -> your FileInputStream
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        IOUtils.copy(is, os);
        os.flush();
        os.close();

        byte[] ba = os.toByteArray();

你不能直接把它读给ByteArrayOutputStream,否则你会得到

代码语言:javascript
复制
java.io.IOException: stream length not specified
at com.sun.media.sound.WaveFileWriter.write(Unknown Source)
at javax.sound.sampled.AudioSystem.write(Unknown Source)
票数 0
EN

Stack Overflow用户

发布于 2016-08-28 10:20:11

很难理解您到底想要什么:带数据的字节数组或包含WAV文件的字节数组。只有声音数据的字节数组是一个非常简单的任务:从AudioInputStream复制到ByteArrayOutputStream。

第二种情况更为复杂。在这种情况下,您应该从AudioInputStream读取到ByteArrayOutputStream,然后形成波头。我可以给你举两个例子。我希望他们能帮助你。

如何将音频记录到字节数组 -它是记录音频到字节数组的例子,里面有波文件。

如何检测声音 -它展示了如何处理AudioInputStream。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22096166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档