【发布时间】:2009-12-17 16:34:24
【问题描述】:
我在使用Clip 接口在 Java 中正确播放声音时遇到问题。
播放声音作品使用:
clip = (Clip)mixer.getLine(dataLineInfo);
clip.open(audioFormat, byteData, 0, byteData.length);
clip.start();
但是,如果剪辑没有关闭,则会出现内存泄漏。
我尝试在开始剪辑之前添加线路侦听器,并使用以下代码:
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
e.getLine().close();
但是,这会导致声音变差。
在该方法中添加 1 秒睡眠可以让我的机器再次运行 - 但我更喜欢更优雅的解决方案 - 我认为在侦听器方法中等待不是好的做法,其他机器可能需要更长的时间。
在声音停止之前的任意时间发送停止事件是很奇怪的。
有人对解决这个问题的更好方法有任何想法吗?
【问题讨论】: