我正在尝试使用处理器节点构建一些东西 here .几乎我在调试方面所做的任何事情都会使 chrome 崩溃。特别是选项卡。每当我调出开发工具时,并且 100% 的时间我在 onaudioprocess
节点中放置一个断点,选项卡就会死掉,我必须找到该选项卡的 chrome 帮助程序或完全强制退出 chrome重新开始。它暂时基本上削弱了我的发展。这是一个已知的问题?我是否需要采取某些预防措施来防止 Chrome 崩溃?实时方面是否 Web 音频 API 根本不可调试?
最佳答案
在没有看到您的代码的情况下,诊断问题有点困难。
运行此代码片段会使您的浏览器选项卡崩溃吗?
let audioCtx = new (window.AudioContext || window.webkitAudioContext)();
function onPlay() {
let scriptProcessor = audioCtx.createScriptProcessor(4096, 2, 2);
scriptProcessor.onaudioprocess = onAudioProcess;
scriptProcessor.connect(audioCtx.destination);
let oscillator = audioCtx.createOscillator();
oscillator.type = "sawtooth";
oscillator.frequency.value = 220;
oscillator.connect(scriptProcessor);
oscillator.start();
}
function onAudioProcess(event) {
let { inputBuffer, outputBuffer } = event;
for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
let inputData = inputBuffer.getChannelData(channel);
let outputData = outputBuffer.getChannelData(channel);
for (let sample = 0; sample < inputBuffer.length; sample++) {
outputData[sample] = inputData[sample];
// Add white noise to oscillator.
outputData[sample] += ((Math.random() * 2) - 1) * 0.2;
// Un-comment the following line to crash the browser tab.
// console.log(sample);
}
}
}
<button type="button" onclick="onPlay()">Play</button>
如果它崩溃了,那是你本地开发环境中的其他东西导致了你的问题,因为它对我来说运行完美。
如果不是,那么也许您正在您的 onaudioprocess
事件处理程序中执行 console.log()
(或其他一些繁重的操作)?请记住,此事件处理程序每次调用时都会处理数千 音频样本,因此您需要小心处理它。例如,尝试取消注释上面代码片段中的 console.log()
行——您的浏览器选项卡将会崩溃。
关于google-chrome - 网络音频 API 崩溃 chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46556390/