Chrome:onaudioprocess在一段时间后停止被调用

2024-04-06

我正在使用 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)中观察到此问题。 有谁知道有什么解决方法吗?


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome:onaudioprocess在一段时间后停止被调用 的相关文章

随机推荐