2014-12-07 92 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