更改混音器以在java中输出声音

时间:2014-11-19 20:08:05

标签: java audio mp3 wav mixer

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

非常感谢任何有用的链接或示例代码。

1 个答案:

答案 0 :(得分:3)

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

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

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

Java Sound Audio Engine
Built-in Input
Soundflower (2ch)
Soundflower (64ch)
Pro Tools Aggregate 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。您可以通过AudioSystem#getClip(Mixer.Info)从中获取Clip

  

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

javax.sound.sampled不支持mp3Alternatives can be found here.