5

複数の出力を備えたサウンドカードがあり、ALSAを使用してそれらを2つの別々のステレオチャンネルにマッピングしています。構成は正常に機能し、たとえばスピーカーテストを使用してオーディオを再生できます。

ここで、AudioSystem APIを使用して、これら2つのステレオ出力をJavaプログラムで使用したいと思います。ただし、stereo1とstereo2はMixerInfoを使用して表示されません。

私は、JavaがAudioSystemAPIを使用して公開する「デバイス」をどのように決定するかを本当に理解していません。私は現在、Ubuntu11.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.");
        }
    }
}
4

1 に答える 1

2

答えはいいえだ。Javaは、ハードウェアデバイスと「デフォルト」デバイスのみを公開するため、ユーザー定義のALSApcmsを一覧表示できません。

ここでALSA開発者から情報を入手しました:http ://www.spinics.net/linux/fedora/alsa-user/msg10796.html

于 2012-03-01T09:44:13.540 に答える