Java 中的控制剪辑音量 -> FloatControl Volume 不执行任何操作
Control Clip Volume in Java -> FloatControl Volume does nothing
我正在尝试调整游戏音乐的音量,我尝试了 FloatControl volume = … 但无论我将其设置为什么值(1.0f 或 0.0f),它的音量都是相同的。有什么想法吗?
public static void playGameSound()
{
try {
AudioInputStream gameSound = AudioSystem.getAudioInputStream(new File("src/res/inGame.wav"));
play = AudioSystem.getClip();
play.open(gameSound);
FloatControl volume = (FloatControl) play.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(1.0f);
play.loop(Clip.LOOP_CONTINUOUSLY);
}catch (LineUnavailableException | IOException | UnsupportedAudioFileException e){
e.printStackTrace();
}
}
我对各种音频控制线的体验是,它们依赖于客户端计算机的声音系统,因此在哪些有效或无效方面存在很多差异。出于这个原因,我使用 SourceDataLine
作为我的输出并通过将每个声音帧乘以音量因子来控制音量。您可以使用我编写的免费库(或检查其代码来编写您自己的库),该库利用了此方法。主要的 class 被称为 AudioCue 并在 Clip 上紧密建模。
我正在尝试调整游戏音乐的音量,我尝试了 FloatControl volume = … 但无论我将其设置为什么值(1.0f 或 0.0f),它的音量都是相同的。有什么想法吗?
public static void playGameSound()
{
try {
AudioInputStream gameSound = AudioSystem.getAudioInputStream(new File("src/res/inGame.wav"));
play = AudioSystem.getClip();
play.open(gameSound);
FloatControl volume = (FloatControl) play.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(1.0f);
play.loop(Clip.LOOP_CONTINUOUSLY);
}catch (LineUnavailableException | IOException | UnsupportedAudioFileException e){
e.printStackTrace();
}
}
我对各种音频控制线的体验是,它们依赖于客户端计算机的声音系统,因此在哪些有效或无效方面存在很多差异。出于这个原因,我使用 SourceDataLine
作为我的输出并通过将每个声音帧乘以音量因子来控制音量。您可以使用我编写的免费库(或检查其代码来编写您自己的库),该库利用了此方法。主要的 class 被称为 AudioCue 并在 Clip 上紧密建模。