【发布时间】:2014-11-10 03:09:11
【问题描述】:
我像这样初始化AudioInputStream:
dataLineInfo = new DataLine.Info(TargetDataLine.class, getAudioFormat()) ;
targetDataLine = (TargetDataLine) AudioSystem.getLine(dataLineInfo);
targetDataLine.open(getAudioFormat());
targetDataLine.start();
效果很好,我可以听到麦克风的音频输入。
如果我尝试将音频输入更改为另一台设备,我只会听到噪音。我已经尝试解决这个问题一个星期了,但我真的不知道为什么我听不到其他音频输入设备的声音了......我会为任何帮助感到非常自豪!
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
if (mixerInfo[cnt].getName() == combo1.getSelectedItem().toString()) {
System.out.println("Gewählter Input gefunden");
if (targetDataLine.isRunning()) {
targetDataLine.stop();
}
targetDataLine.flush();
if (targetDataLine.isOpen()) {
targetDataLine.close();
}
dataLineInfo = new DataLine.Info(TargetDataLine.class, getAudioFormat());
try {
targetDataLine = (TargetDataLine) currentMixer.getLine(dataLineInfo);
targetDataLine.open(getAudioFormat());
targetDataLine.start();
} catch(LineUnavailableException e1) {
e1.printStackTrace();
}
}
}
完整代码请到github
【问题讨论】:
-
我想这已经被问过了。我正在寻找它。
-
我在聊天中发布了为什么
drain()对你不起作用。现在说得通了。我想我对你的信息流的问题部分正确。
标签: java audio microphone