2009-03-17 17 views
13

Jaki jest najprostszy sposób połączenia dwóch plików WAV w Java 1.6? (Równe częstotliwości i wszystkich, nic szczególnego.)Dołącz dwa pliki WAV z Java?

(Jest to prawdopodobnie sooo proste, ale moje Google-fu wydaje się słaba na ten temat dzisiaj.)

+0

Dowiedziałem się, co jest Google-fu +1 :) –

Odpowiedz

32

Oto kod 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

Dziękujemy! Musiał być prosty sposób. – krosenvold

+1

To już nie działa, bo Android nie obsługuje już pakietu javax.sound.sampled. *. Czy jest to jakikolwiek inny sposób na zrobienie tego? –

+18

Drodzy Alex, pytanie brzmi: O mnie w java nie dla Androida – dhams

4

Nagłówek WAV nie powinno być zbyt trudne do analizowania, a jeśli Czytam this header description poprawnie, możesz po prostu usunąć pierwsze 44 bajty z drugiego WAV i po prostu dołączyć bajty do pierwszego. Następnie należy oczywiście zmienić niektóre pola nagłówka pierwszego WAV, tak aby zawierały poprawną nową długość.

+1

Zakładając, że są one tej samej przepływności, częstotliwości próbkowania i mają tę samą liczbę kanałów. – dreamlax

+0

Oczywiście, ale Krosenvold powiedział, że tak. – schnaader

+0

Ale czy naprawdę muszę to zrobić sam? Musi być prostsze rozwiązanie? – krosenvold

4

Znalazłem this (AudioConcat) za pośrednictwem linku "Code Sample & Apps" pod numerem here.

1

Twoim wyzwaniem choć występuje wtedy, gdy dwa pliki WAV nie mają dokładnie ten sam format w nagłówku fali.

Jeśli formaty fal na dwóch plikach nie są takie same, musisz znaleźć sposób, aby je zindegualizować, aby pasowały do ​​siebie.

Może to dotyczyć transkodowania MP3 lub innego rodzaju transkodowania (jeśli jeden z nich jest kodowany za pomocą kodeku MP3).

+0

No cóż, mam szczęście, że nie muszę tego brać pod uwagę. – krosenvold