Java 怎么设置采样音频播放器的音量

2019年7月29日20:08:39Java 怎么设置采样音频播放器的音量已关闭评论 524 1517字阅读5分3秒

1.简介

Java 怎么设置采样音频播放器的音量?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.BooleanControl;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Main {
  public static void main(String[] argv) {
    try {
      AudioInputStream stream = AudioSystem.getAudioInputStream(new File(
          "audiofile"));

      AudioFormat format = stream.getFormat();
      if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
        format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
            format.getSampleRate(), format.getSampleSizeInBits() * 2,
            format.getChannels(), format.getFrameSize() * 2,
            format.getFrameRate(), true); 
        stream = AudioSystem.getAudioInputStream(format, stream);
      }

      DataLine.Info info = new DataLine.Info(Clip.class, stream.getFormat(),
          ((int) stream.getFrameLength() * format.getFrameSize()));
      Clip clip = (Clip) AudioSystem.getLine(info);

      
      clip.open(stream);
      
      FloatControl gainControl = (FloatControl) clip
          .getControl(FloatControl.Type.MASTER_GAIN);
      double gain = .5D; 
      float dB = (float) (Math.log(gain) / Math.log(10.0) * 20.0);
      gainControl.setValue(dB);

      
      BooleanControl muteControl = (BooleanControl) clip
          .getControl(BooleanControl.Type.MUTE);
      muteControl.setValue(true);

      
      muteControl.setValue(false);
      clip.start();
    } catch (Exception e) {
    }
  }

}

 
继续阅读
编程十万个怎么办