簡體   English   中英

使用JLayer調整音量

[英]Adjusting Volume using JLayer

我和一個朋友正在將MP3播放器編程為學校項目。 我們快完成了,現在停留在嘗試編程功能以更改播放器音量的位置。 我們正在使用:

  • 音頻設備
  • AdvancedPlayer

我知道其他人已經問過同樣的問題,但是我還沒有完全解決,我也不想回答這樣一個老問題,所以我以為我會再問一次。

干杯蒂莫西

最簡單的方法是通過mp3spi使用jlayer,這基本上意味着您通過JavaSound使用jlayer。 然后,您可以像在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, 請在此處閱讀

JLGUI是基於UI的JLayer應用程序調整音量的一個很好的例子。 您可以在tar.gz文件中獲取源代碼。 http://www.javazoom.net/jlgui/sources.html

    if (src == ui.getAcVolume())
    {
        Object[] args = { String.valueOf(ui.getAcVolume().getValue()) };
        String volumeText = MessageFormat.format(ui.getResource("slider.volume.text"), args);
        ui.getAcTitleLabel().setAcText(volumeText);
        try
        {
            int gainValue = ui.getAcVolume().getValue();
            int maxGain = ui.getAcVolume().getMaximum();
            if (gainValue == 0) theSoundPlayer.setGain(0);
            else theSoundPlayer.setGain(((double) gainValue / (double) maxGain));
            config.setVolume(gainValue);
        }
        catch (BasicPlayerException ex)
        {
            log.debug("Cannot set gain", ex);
        }
    }

暫無
暫無

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

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