在Java中混合音频文件

在Java中混合音频文件,java,audio,mixing,Java,Audio,Mixing,我正在用Java创建这个程序,它导入X个音频文件并将它们混合在一个音频文件中 例如: 导入:“Audio1.wav”、“Audio2.wav”。 把它们混在一起。 导出:“Result.wav” 直到现在我有了导入和导出方法,我的问题是将文件混合到一个文件中 编辑:一些代码 private静态文件openDialog(){ JFileChooser open=新的JFileChooser(); int returnVal=open.showOpenDialog(打开); if(returnVal

我正在用Java创建这个程序,它导入X个音频文件并将它们混合在一个音频文件中

例如:

导入:“Audio1.wav”、“Audio2.wav”。
把它们混在一起。
导出:“Result.wav”

直到现在我有了导入和导出方法,我的问题是将文件混合到一个文件中

编辑:一些代码

private静态文件openDialog(){
JFileChooser open=新的JFileChooser();
int returnVal=open.showOpenDialog(打开);
if(returnVal==JFileChooser.APPROVE_选项){
返回open.getSelectedFile();
}
返回open.getSelectedFile();
}
私有静态文件保存对话框(){
JFileChooser save=新建JFileChooser();
FileFilter filter=newfilenameextensionfilter(“音频文件”,“.wav”);
save.setFileFilter(过滤器);
//save.addChoosableFileFilter(新的AudioFilter());
int returnVal=save.showsavedilog(保存);
if(returnVal==JFileChooser.APPROVE_选项){
返回save.getSelectedFile();
}
返回save.getSelectedFile();
}
私有静态列表导入文件(文件){
文件。添加(文件);
音频元素();
归还文件;
}

这就是我导入文件并保存结果的方式

混合两个音频流可以很容易地获得样本的总和,即

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

这是假设音频以LPCM编码,具有相同的样本大小和频率。如果音频不是LPCM(如µ-law或A-law),则需要考虑非线性编码的公式。如果样本大小不同,则必须转换为相同的大小。如果采样频率不同,则必须重新采样。

Cool。你有问题吗。。有显示您尝试过的代码吗?我的问题是如何混合
音频输入流
文件。+1@Joni Salonen进一步的建议是使用乘法和除法来控制混合比例,例如,在您的示例中,这将是50-50,如果不是结果除以2,你需要结果的净空,对不起,我不明白这是怎么回事。例如,我想混合使用:
AudioInputStream clip1=AudioSystem.getAudioInputStream(files.get(0));AudioInputStream clip2=AudioSystem.getAudioInputStream(files.get(1))我也面临同样的问题。
result[i] = audio1[i] + audio2[i];