【问题标题】:Java Sound API - Distinguish multiple equal USB sound cardsJava Sound API - 区分多个相等的 USB 声卡
【发布时间】:2010-12-25 07:13:46
【问题描述】:

我正在使用 4 个 USB 声卡 (ASUS Xonar U1)。我想向他们每个人发送不同的声音(用不同语言讲述的相同文本)。目前,我为获得我感兴趣的混音器所做的工作是这样的:

Info[] mixerInfo = AudioSystem.getMixerInfo();
int count = 0;
for (Info i : mixerInfo) {
    System.out.println("["+(count++)+"]" + i.getName() + " - " + i.getDescription()+" - "+i.getVendor());
}

这给了我如下内容:

[5] Device [plughw:1,0] - Direct Audio Device: USB Advanced Audio Device, USB Audio, USB Audio - ALSA (http://www.alsa-project.org)
[6] Device_1 [plughw:2,0] - Direct Audio Device: USB Advanced Audio Device, USB Audio, USB Audio - ALSA (http://www.alsa-project.org)
[7] Device_2 [plughw:3,0] - Direct Audio Device: USB Advanced Audio Device, USB Audio, USB Audio - ALSA (http://www.alsa-project.org)

现在,在我的配置文件中,我将声卡关联到 Info[] 索引(“count”变量)。

问题是如果我更改了连接声卡的 USB 端口。然后 Info[] 数组有一个全新的顺序,我不知道哪个声卡应该播放语言 en_US 以及哪个 pt_PT

此外,“plughw:1,0”字符串的变化没有任何明显的模式。如果我只有一个声卡,无论我连接到哪个端口,它总是“plughw:1,0”。

如果计算机重新启动,混音器 Info[] 有时也会重新排序。

我还查看了 jUSB,但声卡的设备信息对于所有这些都完全相同,我不知道如何将它提供给我的 USB 信息映射到 Java Sound API 混音器信息.

那么,有谁知道如何使用 Java Sound API 唯一地识别相同的声卡?

另外,关于我可以使用哪种语言/库来编写一个将不同音频文件输出到同一台机器中的 4 个不同 USB 声卡的应用程序,是否有人有其他建议?

【问题讨论】:

    标签: java api audio


    【解决方案1】:

    看看 BASS 音频库,它是用 C 语言编写的。有一个 JNI 库,NativeBass,它是在 Java 中使用本机的桥梁。您失去了一些跨平台能力,但该库的性能明显更好,可以很好地处理多个输出,而且我相信在每个音频设备上都有更好的识别。

    (安装NativeBass,还需要自己下载BASS,合并两个/lib目录,文档不全。)

    如果我要坚持使用您使用的解决方案,我会买一个便宜的 USB 集线器,将音频 USB 连接到集线器,然后将集线器连接到计算机。这应该每次都以相同的顺序初始化音频,至少为您在 JavaSound 中提供一致的顺序。

    【讨论】:

    • 我应该提到我们需要使用Linux。据我所见,NativeBass 不能在 Linux 上运行。不管怎样,谢谢你的回答,它给了我们一些见识。我特别喜欢 USB 集线器的技巧,但我没有机会测试它。
    【解决方案2】:

    因为我们需要它在 Linux 中工作,所以我们最终使用了这个解决方案:http://alsa.opensrc.org/Udev

    每次插入音频设备时,它都会为它们分配相同的 hwplug:x,y。更具体地说,它会为每个 USB 端口分配一个固定的 hwplug:x,y。因此,我们始终知道特定声音将发送到哪个 USB 端口。

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 2011-01-07
      • 2011-08-08
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多