Javascript “AudioWorklet”吗;过程“;函数调用延迟随时间增加?
尝试实现一个基本的AudioWorkletProcessor类,用于从麦克风流进行PCM音频处理 我遇到的问题是Javascript “AudioWorklet”吗;过程“;函数调用延迟随时间增加?,javascript,reactjs,audio-worklet,Javascript,Reactjs,Audio Worklet,尝试实现一个基本的AudioWorkletProcessor类,用于从麦克风流进行PCM音频处理 我遇到的问题是进程函数调用的延迟会随着时间的推移而增加。它从小于20ms开始,在不到10min的时间内增加到100ms(在最佳情况下)。增长似乎呈指数增长 试图对这些数据执行任何操作,或者就此而言,在页面中执行任何CPU密集型操作都会大大增加延迟累积的速率 需要一些帮助来解决这个问题,因为它会导致播放器中的缓冲区丢失 registerProcessor("pcm-processor&quo
进程
函数调用的延迟会随着时间的推移而增加。它从小于20ms开始,在不到10min的时间内增加到100ms(在最佳情况下)。增长似乎呈指数增长
试图对这些数据执行任何操作,或者就此而言,在页面中执行任何CPU密集型操作都会大大增加延迟累积的速率
需要一些帮助来解决这个问题,因为它会导致播放器中的缓冲区丢失
registerProcessor("pcm-processor", class extends AudioWorkletProcessor {
constructor() {
super();
this.firstArrival = null;
this.maxDeviation = 0;
this.totalSamplesTest = 0;
this.packages = 0;
}
process(input) {
const t = Date.now();
if (!this.firstArrival) {
this.firstArrival = t;
}
const elapsed = t - this.firstArrival;
const duration = (this.totalSamplesTest / 48000) * 1000.0;
const deviation = Math.abs(duration - elapsed);
if (this.maxDeviation < deviation) {
this.maxDeviation = deviation;
}
this.totalSamplesTest += input[0][0].length;
this.packages++;
if (this.packages % 1000 === 0) {
console.log(this.maxDeviation);
}
return true;
}
});
registerProcessor(“pcm处理器”,类扩展了AudioWorkletProcessor{
构造函数(){
超级();
this.firstArrival=null;
这是最大偏差=0;
此.totalSamplesTest=0;
该值为0;
}
过程(输入){
const t=Date.now();
如果(!这是第一次到达){
this.firstArrival=t;
}
const appeased=t—this.firstArrival;
常量持续时间=(this.totalSamplesTest/48000)*1000.0;
常数偏差=数学绝对值(持续时间-经过);
if(this.max偏差<偏差){
此.max偏差=偏差;
}
this.totalSamplesTest+=输入[0][0]。长度;
这个.packages++;
如果(此值为%1000==0){
console.log(this.max偏差);
}
返回true;
}
});
在8分钟内处理会导致以下控制台日志:
我也以一种非常特殊的方式体验到了这一点(包括一个虚拟音频输入驱动程序)。你找到解决办法了吗?