我使用了Join two WAV files from Java中的代码。我测试了它,但它只能在没有循环的情况下工作。我现在做了一个循环来附加多个音频文件,如下所示:
AudioInputStream clip1 = null, clip2 = null;
for (int i = 1; i < fileAudio.size(); i++){
try {
if (i == 1) {
clip1 = AudioSystem.getAudioInputStream(new File("audio/" + fileAudio.get(0)));
}else{
clip1 = AudioSystem.getAudioInputStream(new File("merged.wav"));
}
clip2 = AudioSystem.getAudioInputStream(new File("audio/" + fileAudio.get(i)));
AudioInputStream appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, clip2),
clip1.getFormat(),
clip1.getFrameLength() + clip2.getFrameLength());
AudioSystem.write(appendedFiles,
AudioFileFormat.Type.WAVE,
new File("merged.wav"));
System.out.println("Appending audio:" + clip1.getFrameLength());
clip1.close();
clip2.close();
appendedFiles.close();
} catch (Exception e) {
e.printStackTrace();
}
}
给出的结果是组合的音频文件的正确长度,但声音仅来自最后一个音频文件。这意味着它并没有真正附加文件的音频。