Java录音和混音器设置

时间:2008-09-12 21:54:43

标签: java javasound

我在无线电数据模式解码程序中使用javax.sound.sampled包。为了使用该程序,用户将来自其无线电接收器的音频馈送到他们的PC的线路输入中。用户还需要使用他们的混音器程序来选择作为录音输入的行。问题是一些用户不知道如何做到这一点,有时其他程序会改变录制输入设置。所以我的问题是我的程序如何检测线路是否被设置为录音输入?如果我的程序检测到它不正确,我的程序也可以更改它吗?

感谢您的时间。

伊恩

1 个答案:

答案 0 :(得分:2)

要回答您的第一个问题,您可以检查录制输入的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了解一些常见设置。请记住,这些控件的可用性取决于操作系统和声卡驱动程序,就像线路输入检测一样。