javascript - AudioWorklet是否在PC和Android上播放Chrome声音时延迟最小?

标签 javascript audio super latency audio-worklet

我尝试了音频html标签,tonejs,音频网络api,并且在Android和PC的浏览器(Chrome浏览器)上仍然有大约110毫秒的时间。

我看到有这个JavaScript音频worlet(super()),但我不知道在此过程中是否可以播放样本

最佳答案

是的,AudioWorklet的延迟将小于3ms(128个样本/ 48,000hz = 2.67ms),并且可以通过将解码的PCM样本发送到process()的输出缓冲区中来充当播放器。 AudioWorklets在浏览器中不受广泛支持,因此 AudioBuffer 是一个很好的跨浏览器替代方案,并且效果很好。

本示例加载一堆音频文件并立即在它们之间切换播放:https://opus-bitrates.anthum.com

audio-player-worklet.js

class AudioPlayer extends AudioWorkletProcessor {
  decodedAudio  // Float32Array data to play (interleaved or separate)

  constructor() {
    super()

    // set audio to play when received from main/worker thread
    this.port.onmessage = ({ data: { decodedAudio } }) => {
      this.decodedAudio = decodedAudio
    }
  }

  process(inputs, outputs) {
    if (this.decodedPCMAudio) {
      // copy 128 samples from decodedAudio to outputs channels
    }

    // run process() again for next 128 samples
    return true
  }
}

registerProcessor('audio-player', AudioPlayer)

关于javascript - AudioWorklet是否在PC和Android上播放Chrome声音时延迟最小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61234451/

相关文章:

javascript - Backbone 中的计算属性

android - Android显示在线音乐播放列表

python - Psychopy Pyo自定义音频

android - 在哪里可以下载Android内置的Unlock.ogg和Lock.ogg声音文件?

java - 错误: Non-static variable super cannot be referenced from a static context >>but i use static keyword

java - 从父类(super class)中获取子类的名称

javascript - 仅替换部分正则表达式匹配

javascript - 如何在javascript中从数组中获取键

javascript - 如何传输完整字符串

python - 如何在 Python 2.7 中使用带参数的 super()?