java - 通过 Java SoundSystem 使用 ALSA pcm 输出

标签 java ubuntu javasound alsa

我有一个带有多个输出的声卡,并使用 ALSA 将它们映射到 2 个独立的立体声 channel 。配置工作正常,允许我使用扬声器测试等方式在其上播放音频。

我现在想使用 AudioSystem API 在 Java 程序中使用这 2 个立体声输出。但是,stereo1 和 stereo2 不会使用 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.");
        }
    }
}

最佳答案

答案是:没有。 Java 无法列出用户定义的 ALSA pcm,因为它仅公开硬件设备和“默认”设备。

从此处的 ALSA 开发人员处获取信息:http://www.spinics.net/linux/fedora/alsa-user/msg10796.html

关于java - 通过 Java SoundSystem 使用 ALSA pcm 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9381940/

相关文章:

java - GWT 应用程序的数据存储位置 - GAE 数据存储或 XML 文件

java - 单击取消按钮 showInputDialog

linux - az login 在 Ubuntu 20.04 中是否停止工作?

php - ffmpeg 从执行的命令行运行,从 mod_fcgid 完成后截断

java - 获取未报告的异常尝试调用函数播放 .WAV 时出现异常

java - 为什么这段代码不播放任何声音?

java - 从 JTabbedPane 中删除蓝色

java - 从 header 获取文件长度 Java Android

带有 Nginx + php5-fpm 的 Wordpress 给了我奇怪的 502 错误,并且 recv() ready() 失败

java - Jar无法播放通过getClass()加载的资源文件夹中的声音