在Java中混合音频文件
我正在用Java导入X个音频文件并将它们混合到1个音频文件中创建此程序。在Java中混合音频文件
实施例:
导入: “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;
}
这就是我如何导入文件并保存结果。
混合两个音频流可以是作为取样品的总和一样简单,即
result[i] = audio1[i] + audio2[i];
这假设音频被在LPCM编码有相同的样本大小和频率。如果音频不是LPCM(如μ律或A律),则需要考虑非线性编码的公式。如果样本大小不同,您必须转换为相同的大小。如果采样频率不同,则必须重新采样。
+1 @Joni Salonen另外的建议是使用乘法和除法来控制混合的比例,例如,在你的例子中,这将是50-50,如果不是将结果除以2,那么你需要提升空间。 – therobyouknow 2012-01-31 13:35:07
对不起,我不明白它是如何工作的。 我想混合例如: 'AudioInputStream clip1 = AudioSystem.getAudioInputStream(files.get(0)); AudioInputStream clip2 = AudioSystem.getAudioInputStream(files.get(1));' – rec 2012-01-31 15:36:11
我也面临同样的问题。 http://stackoverflow.com/questions/9908724/how-to-mix-two-pcm-streams-into-single-mp4-file – 2012-03-29 06:35:15
很酷。你有问题吗?任何代码都显示你已经尝试了什么? – 2012-01-31 13:05:20
我的问题是如何混合'AudioInputStream'文件。 – rec 2012-01-31 16:04:55