У меня проблемы с построением визуализации частоты звука. Я использую аудио тег HTML5:
<audio id="music" src="https://cdn.glitch.com/02dcea11-9bd2-4462-ac38-eeb6a5ad9530%2F331_full_beautiful-minds_0171_preview.mp3?1522829295082" crossorigin="use-URL-credentials" controls="true"></audio>
(песня с www.premiumbeat.com)
используется с AudioContext и Analyzer, как показано ниже:
const audio = document.getElementById('music');
audio.load();
audio.play();
const ctx = new AudioContext();
const audioSrc = ctx.createMediaElementSource(audio);
const analyser = ctx.createAnalyser();
audioSrc.connect(analyser);
analyser.connect(ctx.destination);
analyser.fftSize = 256;
const bufferLength = analyser.frequencyBinCount;
const frequencyData = new Uint8Array(bufferLength);
analyser.getByteFrequencyData(frequencyData);
setTimeout(() => {
analyser.getByteFrequencyData(frequencyData);
console.log(frequencyData);
}, 5000);
Выход:
Даже если песня воспроизводится, когда я вызываю getByteFrequencyData (), на выходе получается массив из 128 элементов, полный нулей.
Ожидаемое поведение:
Через 5 секунд консоль должна вывести массив из 128 элементов данных текущей частоты. (Я делаю это так, потому что requestAnimationFrame задерживает окно, однако я попробовал это сделать, и результат тот же).
Есть идеи, что я делаю не так? (я использую Firefox Quantum 59.0.2.)
Попробуйте здесь: Пример JSFiddle
Спасибо!