У меня есть звуковая карта с несколькими выходами, и я использую ALSA для сопоставления их с 2 отдельными стереоканалами. Конфигурация работает нормально и позволяет мне, например, при тестировании динамика воспроизводить на них аудио.
Теперь я хочу использовать эти два стереовыхода в программе Java, используя AudioSystem API. Тем не менее, стерео1 и стерео2 не отображаются с помощью MixerInfo.
Я не очень понимаю, как Java решает, какие "устройства" выставлять, используя AudioSystem API. В настоящее время я тестирую это в системе Ubuntu 11.10.
Используется asound.conf:
#/etc/asound.conf
pcm_slave.fourchannels {
pcm "hw:0,0"
channels 4
}
pcm.stereo1 {
type plug
slave.pcm {
type dshare
ipc_key 87882222
slave fourchannels
bindings [ 0 1 ]
}
}
pcm.stereo2 {
type plug
slave.pcm {
type dshare
ipc_key 87882222
slave fourchannels
bindings [ 2 3 ]
}
}
Это код, который я использую для отображения доступных входов и выходов:
Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixers) {
System.out.println("Found Mixer: " + mixerInfo);
Mixer m = AudioSystem.getMixer(mixerInfo);
Line.Info[] sourceLines = m.getSourceLineInfo();
for (Line.Info li : sourceLines) {
System.out.println(" Found source line: " + li);
try {
m.open();
} catch (LineUnavailableException e) {
System.out.println(" Line unavailable.");
}
}
Line.Info[] targetLines = m.getTargetLineInfo();
for (Line.Info li : targetLines) {
System.out.println(" Found source line: " + li);
try {
m.open();
} catch (LineUnavailableException e) {
System.out.println(" Line unavailable.");
}
}
}