我搜索了互联网但我找不到解决方案。我想申请录制扬声器的声音。 我尝试了这段代码,但是只允许我从麦克风录制。 我感谢所有帮助我的人
try {
AudioFormat format = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
// checks if system supports the data line
if (!AudioSystem.isLineSupported(info)) {
System.out.println("Line not supported");
System.exit(0);
}
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format);
line.start(); // start capturing
System.out.println("Start capturing...");
AudioInputStream ais = new AudioInputStream(line);
System.out.println("Start recording...");
// start recording
AudioSystem.write(ais, fileType, wavFile);
} catch (LineUnavailableException ex) {
ex.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
我尝试使用此代码
Mixer.Info mixers[] = AudioSystem.getMixerInfo();
Mixer.Info mixer_info = null;
for(int i=0;i<mixers.length;i++)
if(mixers[i].getName().contains("altoparlanti"))
{
mixer_info=mixers[i];
}
Mixer mixer = AudioSystem.getMixer(mixer_info);
AudioFormat format = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
//Port.Info info = Port.Info.MICROPHONE;
// checks if system supports the data line
if (!AudioSystem.isLineSupported(info)) {
System.out.println("Line not supported");
System.exit(0);
}
line = (TargetDataLine) mixer.getLine(info);
它给了我这个错误,错误行是最后的
Exception in thread "main" java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 16000.0 Hz, 8 bit, stereo, 2 bytes/frame,
at com.sun.media.sound.DirectAudioDevice.getLine(DirectAudioDevice.java:174)
at JavaSoundRecorder.start(JavaSoundRecorder.java:65)