Junte-se a dois arquivos WAV do Java?

Qual é a maneira mais simples de concatenar dois arquivos WAV no Java 1.6? (Freqüência igual e tudo, nada extravagante.)

(Isto é provavelmente tão simples, mas o meu Google-fu parece fraco sobre este assunto hoje.)

Aqui está o código barebones:

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

O header WAV não deve ser muito difícil de analisar, e se eu ler esta descrição do header corretamente, você pode apenas remover os primeiros 44 bytes do segundo WAV e simplesmente append os bytes ao primeiro. Depois disso, você deve, obviamente, alterar alguns dos campos de header do primeiro WAV para que eles contenham o novo tamanho correto.

Encontrei isto (AudioConcat) através do link “Amostras de códigos e aplicações” aqui .

Seu desafio ocorre se os dois arquivos WAV não tiverem exatamente o mesmo formato no header da onda.

Se os formatos de onda nos dois arquivos não forem os mesmos, você terá que encontrar uma maneira de transmográ-los para que eles correspondam.

Isso pode envolver um transcodificador de MP3 ou outros tipos de transcodificação (se um deles estiver codificado com um codec de MP3).