将更改的剪辑保存到文件中

时间:2019-05-25 14:32:04

标签: java audio javasound

如何保存已更改音量的打开的音频文件?

我正在尝试:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("some_file.wav"));

Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);

gainControl.setValue(-30.0f); // Reduce volume by 10 decibels.
File file = new File("new.wav");
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, file); 

但这将保存一个空文件。

1 个答案:

答案 0 :(得分:0)

我认为最好的选择是从AudioInputStream中获取字节并将其转换为PCM值,然后将PCM值乘以与-10 db匹配的因子。我不知道那会是什么。然后转换回字节并将其写入。

教程Using Files and Format Converters中的第一个代码示例显示了一个while循环,在该循环中将进行转换,其注释为:“ //在这里,对音频做一些有用的事情...”

有关音频跟踪的先前教程:“使用控件处理音频”也可能会有所帮助,但是内置控件受到限制,并且取决于主机和操作系统。例如,如果您想更改音量(输入淡入或淡出),则控制线可能无法很好地工作,因为粒度与音频缓冲区的大小有关。因此,我建议“使用控件处理音频”教程最后几节的建议,即“直接操作音频数据”部分。