使用Java,我正在尝试从默认麦克风录制声音并显示当前的音量和静音状态(在操作系统级别设置,如果可能,不检查字节的兴趣)。到目前为止,我可以使用以下代码获取TargetDataLine并记录它:
TargetDataLine line = (TargetDataLine) AudioSystem.getLine(new DataLine.Info(TargetDataLine.class, formato));
这在Windows上运行良好,是使用操作系统选择的默认麦克风。
现在,要获得音量/静音控件,我有以下代码:
Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixerInfos) {
Mixer mixer = AudioSystem.getMixer(mixerInfo);
if (mixer.getMaxLines(Port.Info.MICROPHONE) > 0) {
System.out.println("-------------");
System.out.println(mixerInfo);
Port line = (Port) mixer.getLine(Port.Info.MICROPHONE);
line.open();
Line.Info[] targets = mixer.getTargetLineInfo();
Control[] controls = line.getControls();
for (Control control : controls) {
if (control instanceof CompoundControl) {
Control[] subControls = ((CompoundControl) control).getMemberControls();
for (Control subControl : subControls) {
System.out.println(subControl);
}
} else {
System.out.println(control);
}
}
System.out.println("-----------");
}
}
我的设置中有2个麦克风,我还没有找到一种方法可以知道哪个是默认麦克风(现在它是阵列中的第二个)。
尝试Line port = AudioSystem.getLine(Port.Info.MICROPHONE);
并返回第一个可用的(并且它不是此实例中的默认值)。
那么,有没有办法获得与TargetDataLine相关的默认麦克风端口?
谢谢!
答案 0 :(得分:3)
要获得系统中安装的所有麦克风,您可以按以下方式列出:
$result = mysql_query("SELECT author_id FROM user");
$sn = [];
while($data = mysql_fetch_array($result)) {
$sn[] = $data['author_id'];
}
$sn = implode(',',$sn);
$lastresult = mysql_query("SELECT * FROM post WHERE id IN (".$sn.")");
从此开始,您可以识别默认的... 例如,在我的MacBook中,默认值为#34;内置麦克风"