Java的。 Linux操作系统。多个声卡命令

时间:2017-06-14 23:00:31

标签: java linux audio

我写了一个spring boot应用程序,用于从三个相同的声卡中捕获音频,将声音转换为mp3并将其传输到网络。

获取可用设备的代码:

public static Map<Integer, Mixer.Info> getAvailableDevices() {

    Mixer.Info[] mixers = AudioSystem.getMixerInfo();

    Map<Integer, Mixer.Info> devices = new HashMap<>();
    for (Mixer.Info mixer : mixers) {
        Integer patternStart = mixer.getName().indexOf(ALSA_DEVICE_PATTERN);
        if (patternStart > 0) {
            devices.put(Integer.parseInt(mixer.getName().substring(patternStart + 4, patternStart + 5)), mixer);
        }
    }

    return devices;
}

我的应用程序在重启后就像linux恶魔一样启动了。此外,我需要在重新启动计算机时重新启动捕获。而且有麻烦。在Linux中,声卡在计算机启动时会获得随机顺序。

方式#1:按序列号或其他方式硬绑定声卡。但Mixer.Info不包含有关序列号或其他任何硬绑定的信息。所有设备都有相同的信息。

方式#2:/etc/modprode.d/alsa-base中的硬绑定声卡,用于在系统中拥有相同的卡片顺序。但声卡也有相同的内核模块。像这样:

options snd_ca0106 index=0
options snd_ca0106 index=1
options snd_ca0106 index=2

我无法保证重启后设备的顺序相同。

我不知道怎么做。请帮帮我。

0 个答案:

没有答案