Учебник 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
, который не генерируется.
Если я использую mixer.getTargetLines()
, я получаю пустой массив.
Если я создам свой собственный DataLine.Info
и передам его в getLine
микшера, я получаю неподдерживаемое исключение.
Итак, что делать?