Как записать звук с микрофона с помощью java sound API?

Учебник http://download.oracle.com/javase/tutorial/sound/capturing.html не описывает, как выбрать микрофон.

Я перечисляю микшеры с помощью следующего кода

System.out.println("Searching for microphones");
for(Mixer.Info mixerinfo : AudioSystem.getMixerInfo()) {
    mixer = AudioSystem.getMixer(mixerinfo); 

    //System.out.println(mixerinfo.toString());
    if( mixer.isLineSupported(Port.Info.MICROPHONE) ) {
        mixers.add(mixer);
        System.out.println(Integer.toString(mixers.size()) + ": " + mixerinfo.toString());
    }
}

т.е. по наличию микрофонного входа. Но затем, имея микшер, я не могу получить строку для чтения.

Если я использую Mixer.getTargetLineInfo () , я получаю массив из единиц Info , который при переход к Mixer.getLine возвращает объект типа com.sun.media.sound.PortMixer $ PortMixerPort , который не дублируется.

Если я использую микшер. getTargetLines () Я получаю пустой массив.

Если я создаю свой собственный DataLine.Info и передаю его микшеру getLine , я получаю неподдерживаемое исключение.

] Итак, что делать?

6
задан Andrew Thompson 20 June 2011 в 11:57
поделиться