2014-08-29 74 views
1

我在Java代码使用我使用的AudioInputStream AIS装入的AudioInputStream wav文件= AudioSystem.getAudioInputStream(“file.wav”)的体积JAVA:控制的AudioInputStream

一旦我这样做,我希望基本上在最后秒(最后5秒)拿出n秒量,并“淡出”音量(FloatControl.Type.MASTER_GAIN ??)。

完成后,我可以使用以下方法将我的audiostreaminput传回wav文件:AudioSystem.write(ais,Type.WAVE,file_output);

结果是一个相同的wav文件,但最后5秒淡出(音量减少)。

任何想法如何做到这一点?我尝试将ais改为bytes []或sourcedataline ...但没有找到我想要的东西,因为大多数示例都是关于改变音频“播放中”的音量(我还看到了使用Clip的情况似乎是由转动的声音成一个字节数组来处理在播放音频文件)

非常感谢大家

回答

1

开始。然后将这些字节转换为样本:您需要专门为此找到一个教程,它有点涉及Java(http://www.jsresources.org/是一个很好的资源)。样本是声波的直接表示。

要减小音量,请将所有采样乘以小于1的值,然后将其保存回字节数组。要淡出,您需要将最后n个采样乘以递减函数。然后用适当的WAV标题写出文件。

这些仅仅是一个复杂过程的几个指针,希望他们能够将您发送给正确的方向。

+0

非常感谢您的回答,请试试看。如果有效,将会发布。 – user2929613 2014-09-12 13:12:45