簡體   English   中英

JAVA:控制音頻輸入流的音量

[英]JAVA: Controlling volume of an audioinputstream

我在Java代碼中使用了wav文件,該文件使用AudioInputStream ais = AudioSystem.getAudioInputStream(“ file.wav”)加載到AudioInputStream中

完成此操作后,我希望基本上在末尾獲得n秒鍾的時間(假設最后5秒鍾)並“淡出”音量(FloatControl.Type.MASTER_GAIN ??)。

一旦完成,我可以使用以下方法將音頻流輸入傳輸回wav文件:AudioSystem.write(ais,Type.WAVE,file_output);

結果是相同的wav文件,但最后5秒鍾逐漸消失(音量減小)。

關於如何執行此操作的任何想法? 我嘗試將ais更改為bytes []或sourcedataline ...,但沒有找到我想要的,因為大多數示例都是關於更改音頻“播放中”的音量的(我也看到了Clip的使用,似乎正在播放音頻文件)

非常感謝大家

首先將聲音轉換為字節數組。 然后將字節轉換為樣本:您將需要找到專門用於此的教程,它與Java有點關系( http://www.jsresources.org/是很好的資源)。 樣本是聲波的直接表示。

要減小音量,請將所有樣本乘以小於1的值,然后將其保存回字節數組。 要淡出,您需要將最后n個樣本乘以一個遞減函數。 然后用正確的WAV標頭寫出文件。

這些只是一個復雜過程的一些指示,希望它們會向正確的方向發送信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM