一段时间后HTML5音频停止工作(泄漏)

时间:2015-01-07 00:50:03

标签: javascript html5 audio

所以我正在开发HTML5 / javascript rts游戏。 Obv有几种声音一直在播放。所以对我来说发生了一段时间后声音有点“崩溃”,来自此浏览器标签的所有声音都停止工作。我只能通过重新启动浏览器来恢复声音,重新启动选项卡(=重新加载游戏)并不能解决问题。这就是我用来播放声音的方法:

// play sound
soundToPlay.load();
soundToPlay.play();
soundToPlay.volume = volume;

我在win7和FF上。当我玩游戏时,也会发生Windows处理“audiodg”内存使用量增加的情况,当声音停止工作时,它通常达到2.5 gb。当我关闭浏览器时,大部分时间它会回到几MB,这应该是正常的。这个audiodg的东西是一个已知的错误(不是我的游戏,但一般而言),但我并不认为我的游戏之外的audiodg有任何问题。我的游戏的大多数用户似乎没有这个问题,只有相对较少,但我绝对不是唯一一个,它绝对不是FF的东西,我也看到它发生在chrome上。

1 个答案:

答案 0 :(得分:0)

所以,我的猜测是,每次必须播放时都要创建new Audio(filename)

所以,即使使用javascript创建这些内容,最终也会得到一个HTML模板。

var a = new Audio('file.mp3');
// <audio preload=​"auto">​</audio>​

鉴于此,您应该只调用new Audio(filename)一次,并将其存储在可以播放声音时可以引用的变量中:

var clone = $(a).clone()[0];
clone.play();
clone.volume = volume;
clone.onended = function() {
    $(clone).remove();   
}