答案 0 :(得分:35)
以下是准系统代码:
import java.io.File;
import java.io.IOException;
import java.io.SequenceInputStream;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
public class WavAppender {
public static void main(String[] args) {
String wavFile1 = "D:\\wav1.wav";
String wavFile2 = "D:\\wav2.wav";
try {
AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1));
AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));
AudioInputStream appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, clip2),
clip1.getFormat(),
clip1.getFrameLength() + clip2.getFrameLength());
AudioSystem.write(appendedFiles,
AudioFileFormat.Type.WAVE,
new File("D:\\wavAppended.wav"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:4)
WAV标头应该不难解析,如果我正确读取this header description,你可以从第二个WAV中去掉前44个字节,然后简单地将字节附加到第一个字节。之后,您当然应该更改第一个WAV的某些标题字段,以便它们包含正确的新长度。
答案 2 :(得分:4)
答案 3 :(得分:1)
如果两个WAV文件在wave标头中没有完全相同的格式,则会出现您的挑战。
如果两个文件上的波形格式不一样,那么你将不得不找到一种方法来对它们进行变换,使它们匹配。
这可能涉及MP3转码或其他类型的转码(如果其中一个用MP3编解码器编码)。