Увеличивается ли задержка вызова функции 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 минут приводит к появлению следующих журналов консоли:Журналы браузера.

0 ответов

Другие вопросы по тегам