Самый простой способ сделать это - использовать jlayer через mp3spi , что в основном означает, что вы используете jlayer через JavaSound. Затем вы можете установить усиление на линии, как в JavaSound.
Во-первых, вам нужно добавить следующее к вашему classpath:
- jl1.0.1.jar
- mp3spi1.9.5.jar
- tritonus_share.jar
... все они есть в дистрибутиве для mp3spi (ссылка выше).
Во-вторых, вам необходимо декодировать AudioInputStream перед воспроизведением.
AudioInputStream audioStream = AudioSystem.getAudioInputStream(file);
AudioFormat baseFormat = audioStream.getFormat();
AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
AudioInputStream audioStream2 = AudioSystem.getAudioInputStream(decodedFormat, audioStream);
Затем вы проигрываете декодированный поток:
Clip clip = AudioSystem.getClip();
clip.open(audioStream2);
и доступны элементы управления JavaSound API:
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(-30.0f);
ПРИМЕЧАНИЕ: не забудьте закрыть свои ресурсы, я только что показал ключевые моменты этой проблемы - ожидается знакомство с JavaSound, читайте здесь .