如何将SourceDataLine的内容写入文件?
我正在修改播放音频数据的应用程序,以便将数据写入文件。 当前实现时,动态填充字节数组,每次填充时,此缓冲区的内容都写入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的其他用途以及其他文档将其视为从文件中读取的一种方式,因此我对它与AudioSystem.write()的使用感到有些困惑。
那么,如何将数据从SourceDataLine或直接从缓冲区获取到TargetDataLine或AudioInputStream中,以便将其写入文件?
- 使用
byte[]
建立ByteArrayInputStream
- 将BAIS提供给
AudioSystem.getAudioInputStream(InputStream)
- 在
AudioSystem.write(..)
使用AIS