获取混音器可以支持的最大剪辑数?
Get max number of Clips that the Mixer can support?
我通过为每个音频文件调用以下方法打开多个音频文件作为 Clip
的实例:
final Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
final AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(audioStream);
final Clip clip = AudioSystem.getClip(mixerInfo[selectedMixerIdx]);
clip.open(audioInputStream);
但是,当 运行 在某些机器上出现这种情况时,我会在打开一些文件后得到 LineUnavailableException
。
我是 Java Sound API 的新手,所以我可能完全走错了路;但是有什么方法可以查看 Mixer 可以处理的最大 Clip 数量吗?
我将大胆猜测有关线路不可用的问题是由于尝试重新使用线路造成的。 AFAIK,您可以打开任意数量的剪辑(假设您没有 运行 内存不足)。
能同时玩多少是另一个问题。我认为这在很大程度上取决于个人电脑。我想我最后一次尝试这个是几年前在一台旧笔记本电脑上,它可以同时处理 30 个剪辑或一半的 SourceDataLines 播放。
如果您正在尝试将声音文件作为 Clip
同时播放(制作同一音频资源的多个副本),您可能有兴趣查看 AudioCue。这利用了一个计划,其中源数据仅在内存中存储一次,但管理多个 cursors(每个播放实例),并将游标的输出合并为一个SourceDataLine
。使用此工具可以构建一些非常复杂的音景。
我通过为每个音频文件调用以下方法打开多个音频文件作为 Clip
的实例:
final Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
final AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(audioStream);
final Clip clip = AudioSystem.getClip(mixerInfo[selectedMixerIdx]);
clip.open(audioInputStream);
但是,当 运行 在某些机器上出现这种情况时,我会在打开一些文件后得到 LineUnavailableException
。
我是 Java Sound API 的新手,所以我可能完全走错了路;但是有什么方法可以查看 Mixer 可以处理的最大 Clip 数量吗?
我将大胆猜测有关线路不可用的问题是由于尝试重新使用线路造成的。 AFAIK,您可以打开任意数量的剪辑(假设您没有 运行 内存不足)。
能同时玩多少是另一个问题。我认为这在很大程度上取决于个人电脑。我想我最后一次尝试这个是几年前在一台旧笔记本电脑上,它可以同时处理 30 个剪辑或一半的 SourceDataLines 播放。
如果您正在尝试将声音文件作为 Clip
同时播放(制作同一音频资源的多个副本),您可能有兴趣查看 AudioCue。这利用了一个计划,其中源数据仅在内存中存储一次,但管理多个 cursors(每个播放实例),并将游标的输出合并为一个SourceDataLine
。使用此工具可以构建一些非常复杂的音景。