2017-02-11 65 views
0

OfflineContext.suspend會停止OfflineContext.currentTime的進程,但渲染時會產生什麼效果(OfflineContext.startRendering)?我想要做的是開始渲染過程,暫停它,做其他任務並在其他任務完成時繼續。當渲染過程暫停時,即將到來的AudioBuffer不應該變大,這意味着當我將AudioBuffer導出爲wav文件並播放它時,不應該出現與渲染過程所採取的暫停相對應的沉默。如何暫停離線渲染?

我試過OfflineContext.suspend而渲染,它似乎增加了一些沉默的結果wav文件,但也許我做錯了什麼。

  1. 如何暫停渲染過程?
  2. 什麼是OfflineContext.suspend

回答

0

suspend旨在使調用startRendering()之前的受控時間停止離線上下文。你可以在開始渲染之後調用suspend(),但這不是很精確,特別是因爲渲染可能比實時更快。

再加上您在渲染過程中無法訪問AudioBuffer。如果要在渲染時捕捉音頻,請使用ScriptProcessorNodeAudioWorkletNode保存音頻數據。

+0

因此'暫停'讓我開始渲染,暫停渲染,做一些任務並恢復渲染而不在音頻中增加沉默?如果是,那麼我可能會在音頻中保持沉默,因爲我在開始渲染之後調用了「掛起」。在調用'startRendering'之後,執行代碼到達「掛起」所需的幾毫秒足以插入1分鐘的靜音。 – maximedupre

+1

是的。你應該調用'suspend'和'resume'來完成你需要做的事情,然後調用'startRendering'。會發生什麼情況是,在渲染時,上下文將在請求的時間停止,運行代碼並同步恢復(如果請求)。唯一需要注意的是暫停時間量化到前面的(?)128幀邊界。 –