ScriptProcessorNode устарел. Вместо этого используйте AudioWorkletNode. Как правильно использовать?

Пытался получить Аудиоконтекст отпечаток(Audiocontext fingerprint). Вчера показывал все правильно. Выдавал массив примерно такой [-145.835968,-136.51010,-130.71459,-126.36395...] length=1024. Теперь в firefox'e выдает такой массив Array(1024) [ -Infinity, -Infinity, -Infinity...] а в гугле ничего не выводится и предупреждение "ScriptProcessorNode устарел. Вместо этого используйте AudioWorkletNode. " Не нашел как это заменить. Когда я просто вместо ScriptProcessor поменял AudioWorklet не помогло. Кто сталкивался с такой проблемой?

let freq_data = [];
  
   // Create nodes
   const ctx = new AudioContext(); // AudioContext Object
   const oscillator = ctx.createOscillator(); // OscillatorNode
   const analyser = ctx.createAnalyser(); // AnalyserNode
   const gain = ctx.createGain(); // GainNode
   const scriptProcessor = ctx.createScriptProcessor(4096, 1, 1); // ScriptProcessorNode
   
   gain.gain.value = 0;
 
   oscillator.connect(analyser);
   analyser.connect(scriptProcessor);
   scriptProcessor.connect(gain);
   gain.connect(ctx.destination);
   
   scriptProcessor.onaudioprocess = function(bins) {
      bins = new Float32Array(analyser.frequencyBinCount);
      analyser.getFloatFrequencyData(bins);
      
      for (var i = 0; i < bins.length; i = i + 1) {
          freq_data.push(bins[i]);
      }

      analyser.disconnect();
      scriptProcessor.disconnect();
      gain.disconnect();
      console.log(freq_data);  
	
       oscillator.start(0);
}
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы