javascript - 多个 OfflineAudioContext 崩溃浏览器

标签 javascript web-audio-api

我有大约 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/

相关文章:

javascript - 如何将数组复制到从某个单元格开始的列的每个单元格,而不是复制到一行的每个单元格?

javascript - 单击元素后无法显示 Angular 对话框

javascript - 使用 JavaScript 制作陷波滤波器的 HTML5 Canvas 图

javascript - Web Audio API 和音频下载和保护

javascript - Web Audio API,设置高音和低音

javascript - JavaScript 中未定义错误的长度

javascript - -0.5 到 0.5 之间的随机数,高效

Javascript 异步问题 (Sharepoint)

javascript - 未捕获引用错误 BufferLoader 未定义

javascript - 为什么AudioBufferNode中的stop方法会破坏它?