Как вы перечисляете все доступные (входные) порты, используя javax.sound.sampled. *? - PullRequest
1 голос
/ 21 июня 2011

Согласно моим исследованиям, звуковой интерфейс Java не очень хорошо работает с OsX.Ему трудно определить активный вход, поэтому обычно по умолчанию используется первый системный вход.

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

Мой вопрос заключается в том, каким будет наилучший метод для создания массива всех входных портов, доступных для Java?

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Вы можете перечислить все доступные объекты микшера, используя следующее:

Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixers){
    System.out.println(mixerInfo);
}

В моей системе, Mac, это результат:

Java Sound Audio Engine, версия 1.0
Встроенный ввод, версия Неизвестная версия
Встроенный микрофон, версия Неизвестная версия

Редактировать

Вот как можно извлечь список допустимых целевых строк, из которых вы можете получить аудиовход:

Mixer.Info[] mixers = AudioSystem.getMixerInfo();
List<Line.Info> availableLines = new ArrayList<Line.Info>();
for (Mixer.Info mixerInfo : mixers){
    System.out.println("Found Mixer: " + mixerInfo);

    Mixer m = AudioSystem.getMixer(mixerInfo);

    Line.Info[] lines = m.getTargetLineInfo();

    for (Line.Info li : lines){
        System.out.println("Found target line: " + li);
        try {
            m.open();
            availableLines.add(li);                  
        } catch (LineUnavailableException e){
            System.out.println("Line unavailable.");
        }
    }  
}

System.out.println("Available lines: " + availableLines);

Получив объект Line.Info, вы можете получить объект TargetDataLine, связанный с объектом Line.Info, вызвав AudioSystem.getLine () и используя этот Line.Info в качестве параметра.

0 голосов
/ 24 июня 2011

Основы того, как определить, какие ресурсы доступны, можно найти здесь: Доступ к ресурсам аудиосистемы

Я нашел этот раздел наиболее полезным с точки зрения примера кода, вУчебники по Java Sound: http://download.oracle.com/javase/tutorial/sound/converters.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...