2
我使用時Clip.getControl()
按照有錯誤: -AbstractLine不支持的控制類型:主增益的Java
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
錯誤仍然存在
問候
您在測試過程中使用了哪個平臺? – user390525