我使用4个USB声卡(华硕Xonar U1)。我想发送给他们中的每一个不同的声音(用不同的语言叙述相同的文字)。现在,我做什么,以获得混声器是我感兴趣的,是这样的:Java声音API - 区分多个相同的USB声卡
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,但声卡的设备信息对于所有声卡都完全相同,我不知道如何映射它为我提供的Java Sound API混音器的USB信息信息。
那么,有谁知道如何唯一标识与Java Sound API相同的声卡?
另外,有没有人有另一个建议,我可以用哪种语言/库编写一个应用程序,在同一台机器上输出不同的音频文件到4个不同的USB声卡?
我应该提到我们需要使用Linux。从我看到的情况来看,NativeBass在Linux上不起作用。无论如何,谢谢你的回答,它给了我们一些见解。我特别喜欢USB hub技巧,但我没有机会测试它。 – 2009-12-11 11:01:58