【问题标题】:How to pause offline rendering?如何暂停离线渲染?
【发布时间】:2017-06-30 01:43:08
【问题描述】:

OfflineContext.suspend 停止了OfflineContext.currentTime 的进程,但是它在渲染时有什么影响(OfflineContext.startRendering)?我想要做的是开始渲染过程,暂停它,做一些其他任务,并在其他任务完成后恢复它。渲染过程暂停时,即将到来的AudioBuffer 不应该变大,这意味着当我将AudioBuffer 导出到wav 文件并播放时,应该没有与渲染所采取的暂停相对应的静音过程。

我在渲染时尝试了OfflineContext.suspend,它似乎确实在生成的wav文件中添加了一些静音,但也许我做错了什么。

  1. 如何暂停渲染过程?
  2. OfflineContext.suspend 是干什么用的?

【问题讨论】:

    标签: web-audio-api audio-processing audiocontext


    【解决方案1】:

    suspend 旨在在调用startRendering() 之前使离线上下文在受控时间停止。您可以在开始渲染后调用suspend(),但这不是很精确,尤其是因为渲染可能比实时更快。

    另外,您在渲染期间无法访问AudioBuffer。如果您想在渲染时捕获音频,请使用ScriptProcessorNodeAudioWorkletNode 来保存音频数据。

    【讨论】:

    • 那么suspend 是否允许我开始渲染、暂停渲染、执行某些任务并继续渲染而无需在音频中添加静音?如果是,那么我的音频中可能没有声音,因为我在开始渲染后调用了suspend。在调用startRendering 之后执行代码到达suspend 所需的几毫秒足以插入1 分钟的静默。
    • 是的。你应该打电话给suspendresume来做你需要做的任何事情,然后打电话给startRendering。发生的情况是,在渲染时,上下文将在请求的时间停止,运行代码并恢复(如果请求),所有这些都是同步的。唯一需要注意的是暂停时间被量化到前面的 (?) 128 帧边界。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多