Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Java Sound API: как захватить звук с микрофона?


Автор: Dims 7.6.2011, 12:22
Примеры и туториал не катят. Задача -- переносимо ВЫБРАТЬ микрофон, либо автоматически, либо спросив у пользователя, если микрофонов несколько.

У нас есть метод AudioSystem.getLine, который позволяет получить линию по формату. Если случайно угадаешь, в каком формате микрофон поставляет данные, то получишь их. Если не угадаешь, или если микрофонов несколько, то не получишь. 

Я попробовал перебирать миксеры так

Код

                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());
            }
            
        }


и действительно, нашел столько миксеров, сколько в системе микрофонов. Однако, это миксеры типа PortMixer, которые не документированы и ничего с ними сделать нельзя. То есть, никаким способом получить TargetDataLine от этого миксера у меня не получается. У него есть только одна Target линия, которая имеет тип com.sun.media.sound.PortMixer$PortMixerPort, не документированный, что делать с которым -- непонятно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)