Unire due file WAV da Java?

Qual è il modo più semplice per concatenare due file WAV in Java 1.6? (Frequenza uguale e tutto, niente di speciale).

(Questo è probabilmente talmente semplice, ma il mio Google-fu sembra debole su questo argomento oggi.)

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

L’intestazione WAV non dovrebbe essere troppo difficile da analizzare e, se leggo correttamente questa descrizione dell’intestazione , puoi semplicemente rimuovere i primi 44 byte dal secondo WAV e aggiungere semplicemente i byte al primo. Dopodiché, dovresti ovviamente modificare alcuni dei campi di intestazione del primo WAV in modo che contengano la nuova lunghezza corretta.

Ho trovato questo (AudioConcat) tramite il link “Esempi di codice e app” qui .

La tua sfida però si verifica se i due file WAV non hanno lo stesso identico formato nell’intestazione wave.

Se i formati d’onda sui due file non sono gli stessi, dovrai trovare un modo per trasmogrificarli in modo che corrispondano.

Ciò potrebbe comportare un transcodifica MP3 o altri tipi di transcodifica (se uno di essi è codificato con un codec MP3).