我尝试了音频 html 标签、tonejs、音频 web api,但我仍然有大约 110 毫秒的时间使用 android 和 PC 的浏览器(chrome)。
我看到有这个 JavaScript 音频 worlet ( super() ) 但我不知道是否可以在这个过程中播放样本
我尝试了音频 html 标签、tonejs、音频 web api,但我仍然有大约 110 毫秒的时间使用 android 和 PC 的浏览器(chrome)。
我看到有这个 JavaScript 音频 worlet ( super() ) 但我不知道是否可以在这个过程中播放样本
是的,AudioWorklet 的延迟将小于 3 毫秒(128 个样本/48,000hz = 2.67 毫秒),并且可以通过将解码的 PCM 样本发送到process()
. AudioWorklets 在浏览器中没有得到广泛的支持,所以AudioBuffer
它是一个很好的跨浏览器替代方案并且效果很好。
此示例加载一堆音频文件并立即在它们之间切换播放:https ://opus-bitrates.anthum.com
音频播放器-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)