2009-03-17 1 views
13

Qual è il modo più semplice per concatenare due file WAV in Java 1.6? (Frequenza pari e tutto, fantasia nulla.)Unisci due file WAV da Java?

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

+0

Imparo cos'è Google-fu +1 :) –

risposta

32

ecco il codice barebone:

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

Grazie! Doveva esserci un modo semplice. – krosenvold

+1

Questo non funziona più perché Android non supporta più javax.sound.sampled. * Pacchetto. È il loro qualsiasi altro modo per farlo? –

+18

caro Alex la domanda è About in java non per Android – dhams

4

L'intestazione WAV non deve essere essere troppo difficile da analizzare, e se Ho letto correttamente this header description, 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.

+1

Supponendo che abbiano lo stesso bit-rate, frequenza di campionamento e abbiano lo stesso numero di canali. – dreamlax

+0

Ovviamente, ma Krosenvold disse che lo erano. – schnaader

+0

Ma devo davvero farlo da solo? Ci deve essere una soluzione più semplice ?? – krosenvold

4

Ho trovato this (AudioConcat) tramite il collegamento "Esempi di codice &" su here.

1

vostra sfida anche se si verifica se i due file WAV non hanno lo stesso formato esatto nell'intestazione onda.

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

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

+0

Beh, suppongo di essere fortunato a non doverlo considerare. – krosenvold