Используйте выходы ALSA PCM через Java SoundSystem - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть звуковая карта с несколькими выходами, и я использую 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.");
        }
    }
}

1 Ответ

0 голосов
/ 01 марта 2012

Ответ: нет. Java не может перечислить пользовательские PCS ALSA, поскольку она предоставляет только аппаратные устройства и устройство «по умолчанию».

Получил информацию от разработчика ALSA здесь: http://www.spinics.net/linux/fedora/alsa-user/msg10796.html

...