我在java代码中使用了一个wav文件,我使用AudioInputStream加载到AudioInputStream中ais = AudioSystem.getAudioInputStream(" file.wav")
一旦我这样做了,我希望基本上能够在最后获得n秒(让我们说最后5秒)和#34;淡出"音量(FloatControl.Type.MASTER_GAIN ??)。
完成后,我可以使用以下方法将audiostreaminput转换回wav文件:AudioSystem.write(ais,Type.WAVE,file_output);
结果是一个相同的wav文件,但最后5秒淡出(音量减小)。
有关如何做到这一点的任何想法?我尝试将ais更改为bytes []或sourcedataline ...但没有找到我想要的内容,因为大多数示例都是关于改变音频的音量" in-play" (我也看到使用Clip的东西,似乎也在处理播放中的音频文件)
非常感谢大家
答案 0 :(得分:1)
首先将声音转换为字节数组。然后将字节转换为样本:您需要专门为此找到一个教程,它有点涉及Java(http://www.jsresources.org/是一个很好的资源)。样本是声波的直接表示。
要降低音量,请将所有样本乘以小于1的值,然后将它们保存回字节数组。要淡出,您需要将最后n个样本乘以递减函数。然后使用正确的WAV标头写出文件。
这些只是复杂过程的一些指示,希望它们会向您发送正确的方向。