Вопрос

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

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

Ян

Это было полезно?

Решение

Чтобы ответить на свой первый вопрос, вы можете проверить, Линия.Информация объект для входных совпадений вашей записи Порт.Информация.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.Дополнительную информацию и рекомендации см. здесь Часто задаваемые вопросы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top