代码之家  ›  专栏  ›  技术社区  ›  Jacob

自定义仅输出AudioWorkletProcessor的时间戳

  •  0
  • Jacob  · 技术社区  · 4 年前

    AudioWorkletProcessor . 似乎所有的例子都实现了将输入样本转换为输出样本的处理器,但是我想做的是只生成输出,所有这些都基于 时间戳

    根据MDN, BaseAudioContext.currentTime

    为了提供对定时攻击和指纹的保护audioCtx.currentTime可能会根据浏览器设置进行舍入。 在Firefox中隐私.reduceTimerPrecision首选项在默认情况下启用,在Firefox59中默认为20us;在60中为2ms。

    一个黑客的解决方案可能是使用 BaseAudioContext.sampleRate ,一个正在运行的计数器,以及输出数组的大小,但只有当我们能够假设每个样本都是在没有滴落的情况下计算的,并且所有东西都是按顺序计算的,而且我不确定这些假设是否有效时,这才有效。

    在一个处理框架内,是否有可靠的方法知道与给定样本索引相关的时间戳?

    1 回复  |  直到 4 年前
        1
  •  0
  •   chrisguttandin    4 年前

    内部 AudioWorkletGlobalScope 您可以访问 currentTime 以及 currentFrame

    https://webaudio.github.io/web-audio-api/#AudioWorkletGlobalScope-attributes

    据我所知,在任何支持 AudioWorklet .