为什么我只能获得“主要/标准”音频设备的音频输入?

时间:2014-11-11 11:00:51

标签: java audio

我编写了一个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();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

Sooooo我花了几天头痛才找到java bug,现在事实证明这是一个Windows bug。该代码完全适用于另一台PC ...