Как захватить звук с микрофона с помощью API Java? - PullRequest
6 голосов
/ 07 июня 2011

Учебник 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 микшера, я получаю неподдерживаемое исключение.

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

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Левое поле.

Обеспечивает визуальную визуализацию каждой звуковой линии в компоненте по линиям AudioPlotPanel или более простой RMS громкости . Пользователь не должен слишком долго понимать, через какую звуковую линию он проходит. ;)

0 голосов
/ 17 апреля 2013

Я пытаюсь сделать то же самое. Я пока не нашел хорошего решения, но могу сказать, что это не помогает, потому что вы пытаетесь получить DataLine от микшера портов. Если и когда я это выясню, я обязательно сообщу вам.

...