我正在尝试将wav / mp3播放到我的虚拟音频线,我一直在搜索几个小时,但似乎无法找到如何实现这一点。我已经能够以两种格式播放声音,但我无法将其输出到'Line-1'而不是'Speakers'
非常感谢任何有用的链接或示例代码。
答案 0 :(得分:3)
要获取当前平台上所有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是一个虚拟设备。)
为了得到一些特定的Mixer
,您不幸需要进行字符串评估。因此,您需要事先发现其名称,供应商等,或者让用户选择从列表中选择一个。
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
。您可以通过AudioSystem#getClip(Mixer.Info)
从中获取Clip
。
我正在尝试播放wav / mp3 ...
javax.sound.sampled
不支持mp3
。 Alternatives can be found here.