Звукозапись Java и настройки микшера - PullRequest
4 голосов
/ 13 сентября 2008

Я использую пакет javax.sound.sampled в программе декодирования режима радиоданных. Для использования программы пользователь подает аудио со своего радиоприемника на линейный вход своего ПК. Пользователь также должен использовать свою программу микшера, чтобы выбрать строку в качестве входа записи. Проблема в том, что некоторые пользователи не знают, как это сделать, а также иногда другие программы изменяют настройки ввода записи. Поэтому мой вопрос заключается в том, как моя программа может определить, установлена ​​ли строка входа в качестве входного сигнала записи? Также возможно ли, чтобы моя программа изменила настройку входа записи, если обнаружит, что она неверна?

Спасибо за ваше время.

Ian

1 Ответ

2 голосов
/ 14 сентября 2008

Чтобы ответить на ваш первый вопрос, вы можете проверить, соответствует ли объект Line.Info для вашего ввода записи Port.Info.LINE_IN следующим образом:

public static boolean isLineIn(Line.Info lineInfo) {
    Line.Info[] detected = AudioSystem.getSourceLineInfo(Port.Info.LINE_IN);
    for (Line.Info lineIn : detected) {
        if (lineIn.matches(lineInfo)) {
            return true;
        }
    }
    return false;
}

Однако это не работает с операционными системами или API-интерфейсами драйверов звуковых карт, которые не предоставляют тип каждого доступного канала микшера. Поэтому, когда я тестирую его на Windows, он работает, но не на Linux или Mac. Для получения дополнительной информации и рекомендаций см. FAQ .

Что касается вашего второго вопроса, вы можете попробовать изменить настройки входа записи с помощью класса Control . В частности, см. FloatControl.Type для некоторых общих настроек. Помните, что доступность этих элементов управления зависит от операционной системы и драйверов звуковой карты, как и от линейного входа.

...