【发布时间】:2016-01-19 04:13:25
【问题描述】:
我很想写一些基本上只是播放一个短的 .wav 文件的 Java 代码——“短”是指几分之一秒。 (对于那些使用 Ubuntu 的人,我使用的文件位于 /usr/share/sounds/generic.wav。)
问题是,我似乎无法弄清楚如何可靠地播放该样本,也就是说,在我所有的尝试中,我都可以让我的程序以五分之四的方式播放声音次左右,但绝不是 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())但是即使使用那个,如果我连续运行几次,迟早会运行没有任何声音,但也没有例外。
我尝试过的变体:
1) 将音频文件加载到字节数组中并将其传递给 clip.open
2) 将 LineListener 附加到剪辑以等待 STOP 事件
加上一些随机试验,但到目前为止,我还没有设法创建每次都有效的代码。
我也知道以下错误:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4434125 但我使用的是 Java 1.6,并且报告声称 Java 1.5 或更高版本应该没问题。
有什么想法吗?是 PulseAudio 吗?
【问题讨论】: