我尝试了音频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/