2017-02-11 45 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帧边界。 –