Java声音API-捕获麦克风
我已经读了好几天关于Java的声音API的书了,我无法理解它。我是一个不错的程序员,我只是很难理解API 我一直在尝试从麦克风中捕捉音频,并实时显示波形图 他们在教程中说,我很难捕捉音频,但我似乎无法让它工作 任何建议和帮助将不胜感激,逐行回答将是理想的 谢谢你Java声音API-捕获麦克风,java,audio,microphone,Java,Audio,Microphone,我已经读了好几天关于Java的声音API的书了,我无法理解它。我是一个不错的程序员,我只是很难理解API 我一直在尝试从麦克风中捕捉音频,并实时显示波形图 他们在教程中说,我很难捕捉音频,但我似乎无法让它工作 任何建议和帮助将不胜感激,逐行回答将是理想的 谢谢你 import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; i
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;
public class FindLine {
public static void main (String[] args){
AudioFormat format = new AudioFormat(22000,16,2,true,true);
TargetDataLine line;
DataLine.Info info = new DataLine.Info(TargetDataLine.class,
format); // format is an AudioFormat object
if (!AudioSystem.isLineSupported(info)) {
// Handle the error ...
}
// Obtain and open the line.
try {
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format);
} catch (LineUnavailableException ex) {
// Handle the error ...
}
}
}
这将获得操作系统设置的默认值
AudioFormat format = new AudioFormat(8000.0f, 16, 1, true, true);
TargetDataLine microphone = AudioSystem.getTargetDataLine(format);
要选择特定的输入设备(TargetDataLine),最好枚举混频器并过滤所需混频器的名称
Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo();
for (Mixer.Info info: mixerInfos){
Mixer m = AudioSystem.getMixer(info);
Line.Info[] lineInfos = m.getSourceLineInfo();
for (Line.Info lineInfo:lineInfos){
System.out.println (info.getName()+"---"+lineInfo);
Line line = m.getLine(lineInfo);
System.out.println("\t-----"+line);
}
lineInfos = m.getTargetLineInfo();
for (Line.Info lineInfo:lineInfos){
System.out.println (m+"---"+lineInfo);
Line line = m.getLine(lineInfo);
System.out.println("\t-----"+line);
}
}
我遵循了这个教程。这是一篇关于这个主题的很棒的文章:+1我知道这篇文章很旧,但我想知道你上面提供的代码是否就是从micHi simon读取的全部内容,这段代码只列举了可用的设备。选择所需行后(可读取的位置)。你可以按照中的建议做