我正在尝试将wav / mp3播放到我的虚拟音频电缆上,我一直在搜索数小时,但似乎找不到解决方法。我已经能够播放两种格式的声音,但是我无法将其输出到“Line-1”而不是“Speakers”

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

最佳答案

要获得当前平台上所有 Mixer s的数组,可以使用 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 is a virtual device.)

To get some specific Mixer you unfortunately need to do String evaluation. So you need to discover its name, vendor, whatever, beforehand or give the user an option to pick one from a list.

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)


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

关于java - 更改混音器以将声音输出到Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27026042/

10-09 22:30