1

我正在尝试在我的虚拟音频电缆上播放 wav/mp3,我已经搜索了几个小时,但似乎找不到如何实现这一点。我已经能够以两种格式播放声音,但我无法将其输出到“Line-1”而不是“扬声器”

任何有用的链接或示例代码将不胜感激。

4

1 回答 1

3

要获取当前平台上所有Mixers的数组,您可以使用AudioSystem#getMixerInfo

static void printAllMixerNames() {
    for(Mixer.Info info : AudioSystem.getMixerInfo()) {
        System.out.println(info.getName());
    }
}

如果您的虚拟电缆可用,它将在阵列中。例如,在我的 Mac 上打印以下内容:

Java 声音音频引擎
内置输入
音花 (2ch)
音花 (64ch)
Pro Tools 聚合 I/O

(Soundflower 是一个虚拟设备。)

不幸的是,要获得一些具体Mixer信息,您需要进行字符串评估。因此,您需要事先发现它的名称、供应商等,或者让用户可以从列表中选择一个。

static Mixer getMixerByName(String toFind) {
    for(Mixer.Info info : AudioSystem.getMixerInfo()) {
        if(toFind.equals(info.getName())) {
            return AudioSystem.getMixer(info);
        }
    }
    return null;
}

一旦你有一个特定的Mixer,你可以从它获得一个LineAudioInputStream。您可以Clip通过AudioSystem#getClip(Mixer.Info).

我正在尝试播放 wav/ mp3 ...

javax.sound.sampled不支持mp3可以在这里找到替代方案。

于 2014-11-19T22:37:34.237 回答