gpt4 book ai didi

JavaSound 用流写入音频文件

转载 作者:行者123 更新时间:2023-12-02 22:25:02 25 4
gpt4 key购买 nike

我正在尝试使用 JavaSound API 创建音频过滤器来读取和写入音频文件。目前我的代码结构如下:

        ByteArrayOutputStream b_out = new ByteArrayOutputStream();

// Read a frame from the file.
while (audioInputStream.read(audioBytes) != -1) {
//Do stuff here....
b_out.write(outputvalue);
}

// Hook output stream to output file
ByteArrayInputStream b_in = new ByteArrayInputStream(b_out.toByteArray());
AudioInputStream ais = new AudioInputStream(b_in, format, length);
AudioSystem.write(ais, inFileFormat.getType(), outputFile);

这将输入文件作为流读取,对其进行处理并将其写入 bytearrayoutputstream,但它会等到整个文件处理完毕后再写入磁盘。理想情况下,我希望它在处理每个样本时将其写入磁盘。我尝试了几种流结构的组合,但找不到一种方法,因为 AudioSystem.write() 需要输入流。有任何想法吗?

最佳答案

kasperjj 的回答是正确的。您可能正在处理 WAV 文件。看 this
用于波形文件的布局。请注意,整个 WAV 文件的大小在其 header 中进行编码。

我不知道这是否适用于您的情况,但要按照您的描述处理 WAV 样本,您可以使用“常规”非音频 Java 输出流。例如,您可以使用 FileOutputStream 将它们写入临时文件,处理后您可以将临时文件转换为有效的 WAV 文件。

关于JavaSound 用流写入音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com