Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “AudioWorklet”吗;过程“;函数调用延迟随时间增加?_Javascript_Reactjs_Audio Worklet - Fatal编程技术网

Javascript “AudioWorklet”吗;过程“;函数调用延迟随时间增加?

Javascript “AudioWorklet”吗;过程“;函数调用延迟随时间增加?,javascript,reactjs,audio-worklet,Javascript,Reactjs,Audio Worklet,尝试实现一个基本的AudioWorkletProcessor类,用于从麦克风流进行PCM音频处理 我遇到的问题是进程函数调用的延迟会随着时间的推移而增加。它从小于20ms开始,在不到10min的时间内增加到100ms(在最佳情况下)。增长似乎呈指数增长 试图对这些数据执行任何操作,或者就此而言,在页面中执行任何CPU密集型操作都会大大增加延迟累积的速率 需要一些帮助来解决这个问题,因为它会导致播放器中的缓冲区丢失 registerProcessor("pcm-processor&quo

尝试实现一个基本的AudioWorkletProcessor类,用于从麦克风流进行PCM音频处理

我遇到的问题是
进程
函数调用的延迟会随着时间的推移而增加。它从小于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分钟内处理会导致以下控制台日志:

我也以一种非常特殊的方式体验到了这一点(包括一个虚拟音频输入驱动程序)。你找到解决办法了吗?