2009-03-17 12 views
13

Was ist der einfachste Weg, zwei WAV Dateien in Java 1.6 zu verketten? (Equal Frequenz und alle, nichts Besonderes.)Zwei WAV-Dateien von Java verbinden?

(Dies ist wahrscheinlich sooo einfach, aber meine Google-fu scheint schwach zu diesem Thema heute.)

+0

Ich lerne, was ist Google-fu +1 :) –

Antwort

32

ist der Barebone-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),  
           clip1.getFormat(), 
           clip1.getFrameLength() + clip2.getFrameLength()); 

      AudioSystem.write(appendedFiles, 
          AudioFileFormat.Type.WAVE, 
          new File("D:\\wavAppended.wav")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Vielen Dank! Es musste einen einfachen Weg geben. – krosenvold

+1

Dies funktioniert nicht mehr, da Android das Paket javax.sound.sampled. * Nicht mehr unterstützt. Gibt es einen anderen Weg, es zu tun? –

+18

liebe Alex die Frage ist in Java nicht für Android – dhams

4

Die WAV-Header sollten nicht allzu schwer sein werden, um zu analysieren, und wenn Ich lese this header description richtig, Sie können nur die ersten 44 Bytes von der zweiten WAV strippen und einfach die Bytes an die erste anhängen. Danach sollten Sie natürlich einige Headerfelder des ersten WAVs so ändern, dass sie die korrekte neue Länge enthalten.

+1

Angenommen, sie sind von der gleichen Bitrate, Abtastrate und haben die gleiche Anzahl von Kanälen. – dreamlax

+0

Natürlich, aber Kroenvold sagte, sie waren. – schnaader

+0

Aber muss ich das wirklich selbst machen? Es muss eine einfachere Lösung geben ?? – krosenvold

4

Ich fand this (AudioConcat) über die "Code Samples & Apps" Link auf here. Hier

1

Ihre Herausforderung tritt jedoch, wenn die beiden WAV-Dateien nicht genau das gleiche Format in den Wave-Header haben.

Wenn die Wave-Formate für die beiden Dateien nicht identisch sind, müssen Sie einen Weg finden, sie so zu transformieren, dass sie übereinstimmen.

Dies kann eine MP3-Transcodierung oder andere Transcodierungsarten (wenn eine davon mit einem MP3-Codec kodiert ist) beinhalten.

+0

Nun, ich nehme an, dass ich Glück habe, dass ich das nicht berücksichtigen muss. – krosenvold