要获取当前平台上所有Mixer
的数组,可以使用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
,不幸的是您需要进行String评估。因此,您需要事先发现其名称,供应商或其他名称,或者为用户提供从列表中选择一个的选项。
static Mixer getMixerByName(String toFind) {
for(Mixer.Info info : AudioSystem.getMixerInfo()) {
if(toFind.equals(info.getName())) {
return AudioSystem.getMixer(info);
}
}
return null;
}
Mixer
获得特定信息后,您可以从中获取Line
或AudioInputStream
。您可以Clip
通过来从中获取一个AudioSystem#getClip(Mixer.Info)
。
我正在尝试播放wav / …
javax.sound.sampled
不支持mp3
。替代方法可以在这里找到。