gpt4 book ai didi

java - 无法将完整的音频流写入java中的音频文件

转载 作者:行者123 更新时间:2023-12-01 04:49:28 25 4
gpt4 key购买 nike

我正在尝试使用 java 将音频转换为音频流,然后再转换回音频。当我将 wav 文件读入字节数组时,它显示大约 30000 字节,但是当我将其写入新文件时,它只写入 44 字节。请告诉我哪里出错了。代码片段如下:

    File src = new File("C:\\test.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(src);
byte[] data = new byte[ais.available()];
int x = ais.read(data);

int n = AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("C:\\test2.wav"));
System.out.println("x="+x+" n="+n);

n 的输出是 44。

最佳答案

我相信问题是您已将 AudioInputStream 的全部内容读入字节数组。这意味着当您将 AudioInputStream 实例传递给 AudioSystem.write() 方法时,它已经位于文件末尾。 (它正在写入的 44 个字节可能只是 header 信息或类似的信息。)

快速诊断方法是注释掉对 ais.read(data) 的调用,并查看它是否开始正确写出文件。

一种可能的解决方案是在将文件读入字节数组后,使用 AudioInputStream 上的 mark() 和 reset() 方法返回到文件的开头。

关于java - 无法将完整的音频流写入java中的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237040/

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