【发布时间】:2012-03-05 21:01:33
【问题描述】:
我正在修改一个播放音频数据的应用程序,以将数据写入文件。按照目前的实现,一个字节数组是动态填充的,每次填充时这个缓冲区的内容都会写入一个 SourceDataLine。我基本上想将该缓冲区写入指定格式的文件。
我已经阅读了this official tutorial 并发现了这段代码,用于将音频数据写入文件:
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 中,以便将其写入文件?
【问题讨论】:
-
您使用的解决方案是什么?您能否将正在播放/收听的内容写入文件中?
-
@coding_idiot 音频只是一个音调序列,所以我能够从音调发生器复制它们比以编程方式复制它们更容易
标签: java audio file-io javasound