Присоединиться к двум файлам WAV с Java? - PullRequest
15 голосов
/ 17 марта 2009

Какой самый простой способ объединить два WAV файла в Java 1.6? (Равная частота и все, ничего особенного.)

(Это, вероятно, ооочень просто, но мой Google-fu сегодня кажется слабым в этом вопросе.)

Ответы [ 4 ]

35 голосов
/ 18 марта 2009

Вот код скелета:

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();
        }
    }
}
4 голосов
/ 17 марта 2009

Я нашел это (AudioConcat) по ссылке "Образцы кода и приложения" на здесь .

4 голосов
/ 17 марта 2009

WAV-заголовок не должен быть слишком сложным для анализа, и если я правильно прочитал это описание заголовка , вы можете просто удалить первые 44 байта из второго WAV и просто добавить байты к первому один. После этого вам, конечно, следует изменить некоторые поля заголовка первого WAV, чтобы они содержали правильную новую длину.

1 голос
/ 18 марта 2009

Однако ваша проблема возникает, если два файла WAV не имеют одинакового формата в заголовке волны.

Если форматы волн в двух файлах не совпадают, вам нужно найти способ их трансмогрификации, чтобы они соответствовали.

Это может включать в себя транскодирование MP3 или другие виды транскодирования (если один из них закодирован кодеком MP3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...