JAVA:控制音频输入流的音量

JAVA:控制音频输入流的音量,java,audio,controls,wav,volume,Java,Audio,Controls,Wav,Volume,我在java代码中使用了一个wav文件,我使用AudioInputStream ais=AudioSystem.getAudioInputStream(“file.wav”)将其加载到AudioInputStream中 一旦我完成了这项工作,我希望基本上在结束时获得n秒的数量(比如最后5秒)并“淡出”音量(FloatControl.Type.MASTER_GAIN??) 完成后,我可以使用AudioSystem.write(ais,Type.WAVE,file_output)将audiostre

我在java代码中使用了一个wav文件,我使用AudioInputStream ais=AudioSystem.getAudioInputStream(“file.wav”)将其加载到AudioInputStream中

一旦我完成了这项工作,我希望基本上在结束时获得n秒的数量(比如最后5秒)并“淡出”音量(FloatControl.Type.MASTER_GAIN??)

完成后,我可以使用AudioSystem.write(ais,Type.WAVE,file_output)将audiostreaminput传输回wav文件

结果是相同的wav文件,但在最后5秒淡出(音量减小)

你知道怎么做吗?我尝试将ais更改为字节[],或一个sourcedataline。。。但没有找到我想要的,因为大多数例子都是关于改变“播放中”音频的音量的(我也看到了使用Clip的情况,它似乎也在处理播放中的音频文件)


非常感谢大家

首先将声音转换为字节数组。然后将字节转换为示例:您需要找到一个专门用于此的教程,它在Java中有一点涉及(这是一个很好的资源)。样本是声波的直接表示

要减小体积,请将所有样本乘以小于1的值,然后将它们保存回字节数组。要淡出,需要将最后n个样本乘以递减函数。然后用正确的WAV头写出文件


这些只是一个复杂过程的几个指针,希望它们能为您提供正确的方向

非常感谢您的回答,我将尝试一下。如果有效的话,我会发帖的。