google-chrome - Chrome : onaudioprocess stops getting called after a while

标签 google-chrome web-audio-api getusermedia

我正在使用 ScriptProcessorNode 的 onaudioprocess 回调来处理麦克风输入。 通过将 MediaStreamSourceNode 连接到 ScriptProcessorNode,我可以在 onaudioprocess 回调函数中获取原始音频数据。 但是,大约 30 秒(范围从 10 到 35 秒不等)后,浏览器停止调用 onaudioprocess。 在下面的代码中,console.log 输出(“>>”)始终在大约 30 秒后停止。

var ctx = new AudioContext();
var BUFFER_LENGTH = 4096;
console.log('Buffer length is + ' + BUFFER_LENGTH);
navigator.webkitGetUserMedia({audio: true}, function (stream) {
    var mediaStreamSource = ctx.createMediaStreamSource(stream);
    var scriptProcessor = ctx.createScriptProcessor(BUFFER_LENGTH, 1, 1);
    scriptProcessor.onaudioprocess = function (e) {
      console.log('>>');
    };
    scriptProcessor.connect(ctx.destination);
}, function(e) {
  console.error('Unable to get audio input source.');
});

我尝试了所有可能的BUFFER_LENGTH(256、512、1024、2048、4096、8192、16384),但情况没有改变(日志在30秒后停止) 我在最新的 Chrome 版本(版本 35.0.1916.153)和 Canary(版本 37.0.2060.3 canary)中观察到此问题。 有谁知道解决方法吗?

最佳答案

这看起来更像是您的脚本处理器对象正在被垃圾收集。尝试将其保存在全局变量中,看看是否可以解决问题。

关于google-chrome - Chrome : onaudioprocess stops getting called after a while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24338144/

相关文章:

html - 是否可以为 HTML5 API 创建自定义用户权限请求对话框?

javascript - 使用 Javascript 在新选项卡中打开 PDF

javascript - Chrome 扩展 ajax 发送格式错误的重音字符

javascript - 网络 worker 突然终止

shell - 以编程方式加载解压的 Chrome 扩展

javascript - 网络音频振荡器无法创建新的振荡器

javascript - 在Safari或iOS上不会触发onended()

javascript - Web Midi - 列出设备名称

angular - 2019 年访问 navigator.mediaDevices.getUserMedia() 的方式

webrtc - 将 4k Logitech 网络摄像头与 WebRTC/getUserMedia 结合使用