我编写了一个java程序来获取所选音频设备的音频输入。它仅适用于主/标准音频设备(在操作系统中选择的主要/标准)。
start();
启动音频输入流:
public void run() {
while (continueLoop) {
n = targetDataLine.read(tempBuffer, 0, tempBuffer.length);
updateMeter();
try {
Object_Output_Stream.writeObject(tempBuffer);
Object_Output_Stream.reset();
} catch (IOException ex) {
ex.printStackTrace();
continueLoop = false;
}
}
}
如果我尝试选择另一个音频源,它只会返回噪音。谁能告诉我为什么?
if (e.getSource() == combo1) {
System.out.println("Gewählter Input: " + combo1.getSelectedItem());
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 ( !first_time) {
if (targetDataLine.isRunning())
targetDataLine.stop();
if (targetDataLine.isOpen())
targetDataLine.close();
}
dataLineInfo = new DataLine.Info(TargetDataLine.class, getAudioFormat());
try {
targetDataLine = (TargetDataLine) currentMixer.getLine(dataLineInfo);
targetDataLine.open(getAudioFormat());
targetDataLine.start();
if (first_time) {
start();
first_time = false;
}
} catch (LineUnavailableException e1) {
e1.printStackTrace();
}
}
}
}
答案 0 :(得分:0)
Sooooo我花了几天头痛才找到java bug,现在事实证明这是一个Windows bug。该代码完全适用于另一台PC ...