Самый простой способ сделать это — использовать jlayer через mp3spi, что в основном означает, что вы используете jlayer через JavaSound. Затем вы можете установить усиление на линии, как в JavaSound.
Во-первых, вам нужно будет добавить следующее в ваш путь к классам:
- 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, прочитайте здесь.
person
pstanton
schedule
10.07.2013