Java录音和混音器设置

时间:2020-03-05 18:52:34  来源:igfitidea点击:

我在无线电数据模式解码程序中使用javax.sound.sampled包。为了使用该程序,用户将音频从无线电接收器馈送到PC的线路输入中。用户还需要使用其混音器程序来选择该行作为录音输入。麻烦在于某些用户不知道如何执行此操作,有时其他程序会更改录制输入设置。所以我的问题是我的程序如何检测输入的行是否设置为录制输入?如果我的程序检测到输入错误,是否可以更改录音输入设置?

谢谢你的时间。

伊恩

解决方案

回答

要回答第一个问题,我们可以检查录制输入的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上却不能。有关更多信息和建议,请参阅此常见问题解答。

关于第二个问题,我们可以尝试通过Control类来更改录音输入设置。特别是,请参阅FloatControl.Type以获取一些常用设置。请记住,这些控件的可用性取决于操作系统和声卡驱动程序,就像输入检测一样。