我正在使用 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(使用前将#替换为@)