【问题标题】:ScriptProcessorNode internalsScriptProcessorNode 内部结构
【发布时间】:2016-04-13 21:33:13
【问题描述】:

我有一个关于 ScriptProcessorNode 内部操作的问题。在我们的 javascript 处理 onaudioprocess 事件期间,ScriptProcessorNode 本身是否维护一些内部缓冲区以继续捕获和播放音频?如果它有内部缓冲空间,有多大?还有,onaudioprocess 事件可以由用户事件触发吗?

【问题讨论】:

    标签: audio html5-audio audio-streaming web-audio-api


    【解决方案1】:

    音频系统维护这些缓冲区,是的,因为它必须从音频线程异步传输音频(并返回)。它不会阻塞主音频系统的处理,但如果您在主线程 onaudioprocess 响应不够快,它就会出现故障。

    缓冲区是……双缓冲的,我想?我不记得了,确切地说。您传递给 ScriptProcessorNode 的块大小决定了它们的大小。

    最后,您不能通过用户事件触发 onaudioprocess(我的意思是,您可以出于测试目的,我猜) - 它旨在在音频系统需要来自脚本处理器节点的更多数据时触发。

    【讨论】:

    • 如果它不能被用户事件触发,你可以在它们到达时向它发送更多数据。如果在 onaudioprocess 事件发生时一个缓冲区的数据不可用,我们应该在事件处理中等待数据还是不带数据返回并等待下一个事件。
    • 做了更多测试。看起来当 onaudioprocess 事件触发时,您必须填充缓冲区。 ScriptProcessorNode 似乎以缓冲区大小的固定间隔触发。
    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2019-01-08
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2013-03-19
    相关资源
    最近更新 更多