Java 录音和混音器设置

标签 java javasound

我在 radio 数据模式解码程序中使用 javax.sound.sampled 包。要使用该程序,用户需要将 radio 接收器中的音频输入到 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;
}

但是,这不适用于不提供每个可用混音器 channel 类型的操作系统或声卡驱动程序 API。所以当我在 Windows 上测试它时它可以工作,但在 Linux 或 Mac 上却不行。有关更多信息和建议,请参阅此 FAQ .

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

关于Java 录音和混音器设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049/

相关文章:

java - 正在寻找适用于 Windows DirectSound/WASAPI/的 Java 包装器?声音的

java - 在Java中同时播放创建的Midi声音

java - 避免数组覆盖

java - 返回音频文件类型列表

Java MIDI 解析器?

java - "source"元素中的 "Context"属性在 Tomcat 的 server.xml 配置中表示什么?

java - 音频 - 在 Java 中字节到 Int 并返回

java - 如果线程局部映射包含对线程局部对象的弱引用,那么为什么它没有被垃圾回收?

java - Android:如何使异步任务 hibernate ,同时评估某些条件

java - 我正在做一个计算器