【问题标题】:AbstractLine Unsupported control type: Master Gain JavaAbstractLine 不支持的控件类型:Master Gain Java
【发布时间】:2012-12-28 17:36:30
【问题描述】:

我在使用Clip.getControl() 时遇到错误:-

import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class HitPlayer {
    private AudioInputStream ais;
    private Clip clip;
    private FloatControl gain;

    public HitPlayer(String fname){
        try {
            ais = AudioSystem.getAudioInputStream(new File(fname));
            clip = AudioSystem.getClip();
            gain = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
        } catch(UnsupportedAudioFileException e){
            System.err.println("File format not accepted");
        } catch(IOException e){
            System.err.println("IO error");
        } catch(LineUnavailableException e){
            System.err.println("Line unavailable");
        }
    }

    public void setGain(float db){
        gain.setValue(db);
    }

    public void reset(){
        try {
            ais.reset();
        } catch (IOException e) {
            System.err.println("IO error when resetting");
        }
    }

    public void play(){
        clip.start();
    }
}

堆栈跟踪如下:-

Exception in thread "main" java.lang.IllegalArgumentException: Unsupported control type: Master Gain
at com.sun.media.sound.AbstractLine.getControl(AbstractLine.java:164)
at beat.HitPlayer.<init>(HitPlayer.java:21)
at beat.DrumMachine.<init>(DrumMachine.java:18)
at beat.Main.main(Main.java:14)

我一直在尝试通过检查 grepcode 上的 OpenJDK 代码来跟踪错误; AbstractLine grepcode.com 和相关类。

我想知道是否有人遇到过这个问题,我正在使用 java version "1.7.0_07" OpenJDK Runtime Environment (IcedTea7 2.3.2) (Slackware) OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode) 如果有什么不同的话。

我基本上是在尝试通过gain = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); 访问增益或音量控件。无论我使用的是MASTER_GAIN 还是VOLUME,错误都会持续存在

问候

【问题讨论】:

  • 你在测试过程中使用了什么平台?

标签: java clip


【解决方案1】:

我忘记打开线路了。添加了以下内容:-

clip.open(ais);

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 2015-04-23
    • 2011-06-21
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2016-06-06
    • 2017-03-06
    • 2014-09-03
    相关资源
    最近更新 更多