【发布时间】: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 声卡的应用程序,是否有人有其他建议?
【问题讨论】: