Take the 2-minute tour ×

What's the simplest way to concatenate two WAV files in Java 1.6? (Equal frequency and all, nothing fancy.)

(This is probably sooo simple, but my Google-fu seems weak on this subject today.)

share|improve this question

4 Answers 4

up vote 20 down vote accepted

Here is the barebones code:

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),     

                            new File("D:\\wavAppended.wav"));
	    } catch (Exception e) {
share|improve this answer
Thank you! There had to be a simple way. –  krosenvold Mar 18 '09 at 5:54
This doesn't work anymore cause android doesn't support javax.sound.sampled.* package anymore. Is their any other way to do it? –  Alex Kapustian Jun 9 '11 at 9:57
dear Alex the question is About in java not for Android –  dhams Sep 7 '12 at 7:01
i this won't work if the two files differ in length, what do you say ? –  Papa_Jay Feb 19 at 12:12
The length of each clip should not matter. However, both files must be of the same format (mono/stereo, sampling rate, etc.). –  James Van Huis Feb 19 at 16:54

I found this (AudioConcat) via the "Code Samples & Apps" link on here.

share|improve this answer

The WAV header should be not be too hard to parse, and if I read this header description correctly, you can just strip the first 44 bytes from the second WAV and simply append the bytes to the first one. After that, you should of course change some of the header fields of the first WAV so that they contain the correct new length.

share|improve this answer
Assuming they are of the same bit-rate, sample-rate, and have the same number of channels. –  dreamlax Mar 17 '09 at 11:43
Of course, but krosenvold said they were. –  schnaader Mar 17 '09 at 11:44
But do I really have to do this myself ? There must be a simpler solution ?? –  krosenvold Mar 17 '09 at 11:57
You could have a look at javax.sound.sampled.AudioFileFormat - at least it's able to read WAV files, perhaps you can write WAVs with it, too. –  schnaader Mar 17 '09 at 12:02

Your challenge though occurs if the two WAV files don't have the exact same format in the wave header.

If the wave formats on the two files aren't the same, you're going to have to find a way to transmogrify them so they match.

That may involve an MP3 transcode or other kinds of transcoding (if one of them is encoded with an MP3 codec).

share|improve this answer
Well I suppose I'm lucky that I don't have to consider this. –  krosenvold Mar 18 '09 at 6:28

Your Answer


