Увеличивается ли задержка вызова функции AudioWorklet со временем?
Пытался реализовать базовый класс AudioWorkletProcessor для обработки звука PCM из микрофонного потока.
Проблема, с которой я столкнулся, заключается в том, что задержка
process
количество вызовов функций увеличивается со временем. Он начинается менее чем с 20 мс и увеличивается до 100 мс менее чем за 10 минут (в лучшем случае). Рост кажется экспоненциальным.
Попытка выполнить какие-либо действия с этими данными или, если уж на то пошло, выполнение любых операций с интенсивным использованием ЦП на странице значительно увеличивает скорость нарастания этой задержки.
Нужна помощь с этой проблемой, так как это приводит к потере буфера в плеере.
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;
}
});
Обработка в течение 8 минут приводит к появлению следующих журналов консоли:Журналы браузера.