Change Mixer to output sound to in java

徘徊边缘 提交于 2019-12-01 12:26:58
Radiodef

To get an array of all Mixers on the current platform, you may use AudioSystem#getMixerInfo:

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

If your virtual cable is available, it will be in the array. For example, on my Mac the following is printed:

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;
}

Once you have a particular Mixer you can obtain a Line or AudioInputStream from it. You can obtain a Clip from it through AudioSystem#getClip(Mixer.Info).

I am trying to play a wav/mp3...

javax.sound.sampled does not support mp3. Alternatives can be found here.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!