Микширование аудио файлов в Java - PullRequest
1 голос
/ 31 января 2012

Я создаю эту программу на Java, которая импортирует X аудиофайлов и смешивает их в 1 аудиофайл.

Пример:

Импорт: "Audio1.wav", "Audio2.wav".
Смешайте их.
Экспорт: "Result.wav"

До сих пор у меня есть методы импорта и экспорта, моя проблема заключается в смешивании файлов в 1 файл.

Редактировать: Часть кода.

private static File openDialog(){
    JFileChooser open = new JFileChooser();
    int returnVal = open.showOpenDialog(open);
    if (returnVal == JFileChooser.APPROVE_OPTION){
        return open.getSelectedFile();
    }
    return open.getSelectedFile();
}
private static File saveDialog(){
    JFileChooser save = new JFileChooser();
    FileFilter filter = new FileNameExtensionFilter("Audio files", ".wav");
    save.setFileFilter(filter);
    //save.addChoosableFileFilter(new AudioFilter());
    int returnVal = save.showSaveDialog(save);
    if (returnVal == JFileChooser.APPROVE_OPTION){
        return save.getSelectedFile();
    }
    return save.getSelectedFile();
}

private static List<File> importFile(File file){
    files.add(file);
    audioElements();
    return files;
}

Вот так я импортирую файлы и сохраняю результат.

1 Ответ

2 голосов
/ 31 января 2012

Микширование двух аудиопотоков может быть таким же простым, как и взятие суммы сэмплов, то есть

result[i] = audio1[i] + audio2[i];

Это предполагает, что аудио кодируется в LPCM с тем же размером сэмплирования и частотой.Если аудио не LPCM (например, µ-закон или A-закон), вам нужна формула, которая учитывает нелинейное кодирование.Если размеры выборки отличаются, вы должны конвертировать в один и тот же размер.Если частоты сэмплирования различны, вам необходимо сэмплировать заново.

...