2014-12-07 63 views
0

我将麦克风输入节点getUserMedia({audio:true})连接到createScriptProcessor节点,并且onaudioprocess事件回调刚刚停止,我无法弄清楚原因。AudioContext createScriptProcessor随机停止,没有错误

我打印出每个回调的事件。一个在中间看起来是这样的:

AudioProcessingEvent {outputBuffer: AudioBuffer, inputBuffer: AudioBuffer, playbackTime: 5.479909297052155, clipboardData: undefined, path: NodeList[0]…} 
bubbles: true 
cancelBubble: false 
cancelable: false 
clipboardData: undefined 
currentTarget: ScriptProcessorNode 
defaultPrevented: false 
eventPhase: 0 
inputBuffer: AudioBuffer 
outputBuffer: AudioBuffer 
path: NodeList[0] 
playbackTime: 5.479909297052155 
returnValue: true 
srcElement: ScriptProcessorNode 
target: ScriptProcessorNode 
timeStamp: 1417920765179 
type: "audioprocess" 
__proto__: AudioProcessingEvent 

,最后一个看起来是这样的:

AudioProcessingEvent {outputBuffer: AudioBuffer, inputBuffer: AudioBuffer, playbackTime: 5.944308390022676, clipboardData: undefined, path: NodeList[0]…} 
bubbles: true 
cancelBubble: false 
cancelable: false 
clipboardData: undefined 
currentTarget: ScriptProcessorNode 
defaultPrevented: false 
eventPhase: 0 
inputBuffer: AudioBuffer 
outputBuffer: AudioBuffer 
path: NodeList[0] 
playbackTime: 5.944308390022676 
returnValue: true 
srcElement: ScriptProcessorNode 
target: ScriptProcessorNode 
timeStamp: 1417920765643 
type: "audioprocess" 
__proto__: AudioProcessingEvent 

看起来没有什么不同我。我希望这个事件包含某种通知。或者在控制台中至少出现错误。

有没有办法绑定到某种错误事件或什么?我不知道如何进一步解决这个问题。有时会在一毫秒后停止。有时在几分钟后。我似乎无法确定问题所在。

回答

3

这听起来像一个垃圾收集。你可以指向代码吗?

+0

完全可以。我怎么做? [这是代码](https://github.com/ccorcos/meteor-webaudio)。我需要“删除”使用'new'创建的任何对象吗?另外,是否有任何开发工具可以显示这一点? – Chet 2014-12-07 07:31:00

+0

是的,所以这绝对是问题。出于某种原因,我虽然JavaScript神奇地解决了这个问题。我想我喜欢功能性编程更多... – Chet 2014-12-07 08:56:07

+0

所以我不知道如何弄清楚这一点。我删除了我创建的'new'对象。当我在铬开发人员工具中查看时间线时,看起来像锯齿波。所以看起来内存只是不断增加而后下降。我不确定它是从哪里来的...... – Chet 2014-12-08 02:25:29