google-chrome - 网络音频 API 崩溃 chrome

标签 google-chrome web-audio-api

我正在尝试使用处理器节点构建一些东西 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/

相关文章:

Javascript网络音频均方根不读取流

javascript - 分析器未在音频传入时更新 Canvas 绘制速度

audio - 有人可以告诉我为什么我的白噪声,粉红噪声和棕噪声不起作用(Web Audio API)

android - 是什么导致 Android Chrome 上的网络请求被取消

jquery - 跟踪光标悬停位置并显示类似于 OSX dock/Windows 开始栏的隐藏菜单

java - 使用 java 1.7.0.40 时,Applet 无法在 Chrome 或 FF 中运行

javascript - 运行时设置 puppeteer 窗口大小而不是 headless (不是视口(viewport))

javascript - Web 音频 API 获取 <audio> 元素的 AudioBuffer

javascript - Web Audio API 分析器节点 getByteFrequencyData 返回空白数组

html5 视频标签 - firefox 和 chrome 中视频质量不同