我正在努力编写一些基本上只播放短 .wav 文件的 Java 代码 - “短”是指不到一秒的时间。 (对于使用 Ubuntu 的用户,我使用的文件位于 /usr/share/sounds/generic.wav。)
问题是,我似乎不知道如何播放该样本reliably,也就是说,在我所有的尝试中,我可以让我的程序在 5 次左右播放声音 4 次,但永远不会 100%。
这是迄今为止作为独立程序效果最好的:
File soundFile = new File("/usr/share/sounds/generic.wav");
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(soundFile);
clip.open(inputStream);
clip.start();
(请注意,代码甚至没有调用clip.stop())但即使有了这个,如果我连续运行几次,迟早会出现一次没有播放任何声音的运行,但没有也有例外。
我尝试过的变体:
-
将音频文件加载到字节数组中并将其传递给 Clip.open
-
将 LineListener 附加到剪辑以等待 STOP 事件
加上一些随机尝试,但到目前为止我还没有设法创建有效的代码每次.
我还知道以下错误:https://bugs.java.com/bugdatabase/view_bug?bug_id=4434125但我使用的是 Java 1.6,报告声称 Java 1.5 或更高版本应该没问题。
有任何想法吗?是脉冲音频吗?
我很幸运地使用了 BASS 音频库。
它是原生编写的,因此它打破了一次写入、随处运行的原则,但它可以在 Windows、OS/X 和 Linux 上运行,这足以满足我的需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)