Spec-Zone.ru › Web APIs

AnalyserNode: метод getByteFrequencyData()

Базовая поддержка Широко распространённая

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.

  • Подробнее
  • Полная совместимость
  • Отправить обратную связь

Метод getByteFrequencyData() интерфейса AnalyserNode копирует текущие данные частоты в переданный Uint8Array (массив беззнаковых байтов).

Данные частоты состоят из целых чисел в диапазоне от 0 до 255.

Каждый элемент массива представляет собой значение децибел для определённой частоты. Частоты распределяются линейно от 0 до 1/2 частоты дискретизации. Например, для частоты дискретизации 48000 последний элемент массива будет представлять значение децибел для 24000 Гц.

Если массив содержит меньше элементов, чем AnalyserNode.frequencyBinCount, избыточные элементы отбрасываются. Если он содержит больше элементов, чем необходимо, избыточные элементы игнорируются.

Синтаксис

getByteFrequencyData(array)

Параметры

array

Uint8Array, в который будут скопированы данные частотной области. Если массив содержит меньше элементов, чем AnalyserNode.frequencyBinCount, избыточные элементы отбрасываются. Если массив содержит больше элементов, чем необходимо, избыточные элементы игнорируются.

Возвращаемое значение

None (undefined).

Примеры

В следующем примере показано базовое использование AudioContext для создания AnalyserNode, а затем requestAnimationFrame и <canvas> для многократного сбора данных частоты и построения визуализации в стиле "графика Winamp" текущего аудиовхода. Для более полных примеров и информации смотрите демонстрацию Voice-change-O-matic (см. строки 108–193 в app.js для соответствующего кода).

const audioCtx = new AudioContext();
const analyser = audioCtx.createAnalyser();

// …

analyser.fftSize = 256;
const bufferLength = analyser.frequencyBinCount;
console.log(bufferLength);
const dataArray = new Uint8Array(bufferLength);

canvasCtx.clearRect(0, 0, WIDTH, HEIGHT);

function draw() {
  drawVisual = requestAnimationFrame(draw);

  analyser.getByteFrequencyData(dataArray);

  canvasCtx.fillStyle = "rgb(0 0 0)";
  canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);

  const barWidth = (WIDTH / bufferLength) * 2.5;
  let barHeight;
  let x = 0;

  for (let i = 0; i < bufferLength; i++) {
    barHeight = dataArray[i];

    canvasCtx.fillStyle = `rgb(${barHeight + 100} 50 50)`;
    canvasCtx.fillRect(x, HEIGHT - barHeight / 2, barWidth, barHeight / 2);

    x += barWidth + 1;
  }
}

draw();

Спецификации

Спецификация
Web Audio API
# dom-analysernode-getbytefrequencydata

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
getByteFrequencyData 14 12 25 15 6 18 25 14 6 1.0 4.4.3

См. также

  • Использование Web Audio API

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API