繁体   English   中英

如何将SourceDataLine的内容写入文件?

[英]How can I write the contents of a SourceDataLine to a file?

我正在修改播放音频数据的应用程序,以便将数据写入文件。 当前实现时,会动态填充字节数组,并且每次填充时,此缓冲区的内容都会写入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中,以便可以将其写入文件?

  1. 使用byte[]建立ByteArrayInputStream
  2. 提供BAIS到AudioSystem.getAudioInputStream(InputStream)
  3. AudioSystem.write(..)使用AIS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM