我正在尝试在我的虚拟音频电缆上播放 wav/mp3,我已经搜索了几个小时,但似乎找不到如何实现这一点。我已经能够以两种格式播放声音,但我无法将其输出到“Line-1”而不是“扬声器”
任何有用的链接或示例代码将不胜感激。
要获取当前平台上所有Mixer
s的数组,您可以使用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
信息,您需要进行字符串评估。因此,您需要事先发现它的名称、供应商等,或者让用户可以从列表中选择一个。
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/ mp3 ...
javax.sound.sampled
不支持mp3
。可以在这里找到替代方案。