join两个来自Java的WAV文件?

在Java 1.6中连接两个WAV文件最简单的方法是什么? (等频率和所有,没有什么奇特的。)

(这可能很简单,但是我的Google-fu在这个话题上似乎很弱。)

这是准系统代码:

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(); } } } 

WAV头应该不会太难parsing,如果我正确地读取了这个头描述 ,你可以从第二个WAV中去掉前面的44个字节,并简单地将字节附加到第一个WAV 头上 。 之后,你当然应该改变第一个WAV的一些头域,以便它们包含正确的新长度。

我通过这里的“Code Samples&Apps”链接find了这个 (AudioConcat)。

如果两个WAV文件在波头中没有完全相同的格式,则会发生问题。

如果两个文件的波形格式不一样,那么你将不得不find一种方法来转换它们,使它们匹配。

这可能涉及MP3转码或其他types的转码(如果其中一个用MP3编解码器编码)。