我正在修改一个播放音频数据的应用程序,以将数据写入文件。正如当前实现的那样,字节数组是动态填充的,每次填充时,该缓冲区的内容都会写入 SourceDataLine 中。我基本上想将该缓冲区写入指定格式的文件中。
我已读完这个官方教程并遇到了用于将音频数据写入文件的代码片段:
File fileOut = new File(someNewPathName);
AudioFileFormat.Type fileType = fileFormat.getType();
if (AudioSystem.isFileTypeSupported(fileType,
audioInputStream)) {
AudioSystem.write(audioInputStream, fileType, fileOut);
}
我从 API 文档中看到,我可以使用 TargetDataLine 构造 AudioInputStream,但在我的例子中,我有一个 SourceDataLine。我不知道如何将字节数组中的数据获取到 TargetDataLine 中,因为它实现了 read() 方法而不是 write()。该文档和其他文档中 AudioInputStream 的其他用途将其视为一种阅读方式from一个文件,所以我对它与 AudioSystem.write() 的使用有点困惑。
那么,如何从 SourceDataLine 或直接从缓冲区获取数据到 TargetDataLine 或 AudioInputStream 中,以便将其写出到文件中?
- Use the
byte[]
建立一个ByteArrayInputStream
- 提供 BAIS 至AudioSystem.getAudioInputStream(InputStream)
- 使用 AIS
AudioSystem.write(..)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)