我有大约 60 个音频文件(每个约 3 分钟)。我遍历这个数组——为每个项目创建一个 OfflineAudioContext,然后像这样进行一些过滤和处理:
var request = new XMLHttpRequest();
request.open('GET', audioFile.source, true);
request.responseType = "arraybuffer";
request.onload = function(){
context.decodeAudioData(request.response, function(buffer) {
audioFileBuffer = buffer;
offlineContext = new OfflineAudioContext(1, buffer.length, buffer.sampleRate);
//do some processing
//do some checks
}
}
即使没有任何处理或“检查”,这也会导致浏览器在大约 30 标记处崩溃。我已经尝试过缓慢地浏览数组(每个项目的按钮点击)但浏览器仍然会在这个阈值附近崩溃。
处理和检查完成后,offlineContext 和用于创建它的任何东西都不再需要 - 这是否仍在某处占用内存并导致浏览器崩溃?
编辑:更改代码以测试更具体的区域,看起来离线音频上下文只会使 chrome 崩溃,以下测试将在 opera、ff 和 safari 中完成所有 1000 次运行,但在 chrome 中会在大约 170 次时崩溃。
for(i=0; i<1000; i++){
var off = new webkitOfflineAudioContext(1, 1764000, 44100);
console.log(i);
}
Chrome 报错:“Uncaught NotSupportedError: Failed to construct 'OfflineAudioContext': OfflineAudioContext(1, 1764000, 44100)” 然后刷新页面会崩溃
最佳答案
没有看到所有周围的代码,我无法判断。您能否删除 decodeAudioData 调用并仅创建 30 多个给定长度的 OfflineAudioContexts 并查看它是否有相同的问题? (即不加载缓冲区)。
关于javascript - 多个 OfflineAudioContext 崩溃浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26529366/