如何保存已更改音量的打开的音频文件?
我正在尝试:
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);
但这将保存一个空文件。
答案 0 :(得分:0)
我认为最好的选择是从AudioInputStream中获取字节并将其转换为PCM值,然后将PCM值乘以与-10 db匹配的因子。我不知道那会是什么。然后转换回字节并将其写入。
教程Using Files and Format Converters中的第一个代码示例显示了一个while循环,在该循环中将进行转换,其注释为:“ //在这里,对音频做一些有用的事情...”
有关音频跟踪的先前教程:“使用控件处理音频”也可能会有所帮助,但是内置控件受到限制,并且取决于主机和操作系统。例如,如果您想更改音量(输入淡入或淡出),则控制线可能无法很好地工作,因为粒度与音频缓冲区的大小有关。因此,我建议“使用控件处理音频”教程最后几节的建议,即“直接操作音频数据”部分。