我在Java中创建这个程序,导入X个音频文件并将它们混合在一个音频文件中。
示例:
导入:“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;
}
这是我导入文件并保存结果的方法。
答案 0 :(得分:2)
混合两个音频流就像获取样本之和一样简单,即
result[i] = audio1[i] + audio2[i];
这假设音频在LPCM中以相同的样本大小和频率进行编码。如果音频不是LPCM(如μ律或A律),则需要考虑非线性编码的公式。如果样本大小不同,则必须转换为相同的大小。如果采样频率不同,则必须重新采样。