Spec-Zone.ru › Web APIs

Звуковой буфер

Базовая Широко доступная

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

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Интерфейс AudioBuffer представляет собой небольшой аудио-фрагмент в памяти, созданный из аудиофайла с помощью метода AudioContext.decodeAudioData(), или из исходных данных с помощью AudioContext.createBuffer(). После размещения в AudioBuffer, аудио можно воспроизвести, передав его в AudioBufferSourceNode.

Объекты этих типов предназначены для хранения коротких аудио-фрагментов, обычно менее 45 секунд. Для более длинных звуков более подходящими являются объекты, реализующие MediaElementAudioSourceNode. Буфер содержит форму волны аудиосигнала, закодированную как серия амплитуд в формате: неинтерлированный IEEE754 32-битный линейный PCM с номинальным диапазоном между -1 и +1, то есть 32-битный буфер с плавающей точкой, где каждый образец находится между -1.0 и 1.0. Если у AudioBuffer несколько каналов, они хранятся в отдельных буферах.

Конструктор

AudioBuffer()

Создает и возвращает новый экземпляр объекта AudioBuffer.

Свойства экземпляра

AudioBuffer.sampleRate Только для чтения

Возвращает число с плавающей точкой, представляющее частоту дискретизации данных PCM, хранящихся в буфере, в образцах в секунду.

AudioBuffer.length Только для чтения

Возвращает целое число, представляющее длину данных PCM, хранящихся в буфере, в образцах-кадрах.

AudioBuffer.duration Только для чтения

Возвращает число с плавающей точкой двойной точности, представляющее длительность данных PCM, хранящихся в буфере, в секундах.

AudioBuffer.numberOfChannels Только для чтения

Возвращает целое число, представляющее количество дискретных аудиоканалов, описываемых данными PCM, хранящимися в буфере.

Методы экземпляра

AudioBuffer.getChannelData()

Возвращает Float32Array, содержащий данные PCM, связанные с каналом, определенным параметром channel (причем 0 представляет первый канал).

AudioBuffer.copyFromChannel()

Копирует образцы из указанного канала AudioBuffer в массив destination.

AudioBuffer.copyToChannel()

Копирует образцы в указанный канал AudioBuffer, из массива source.

Пример

Следующий простой пример демонстрирует, как создать AudioBuffer и заполнить его случайным белым шумом. Полный исходный код можно найти в нашем репозитории webaudio-examples; также доступна рабочая онлайн-версия.

const audioCtx = new AudioContext();

// Create an empty three-second stereo buffer at the sample rate of the AudioContext
const myArrayBuffer = audioCtx.createBuffer(
  2,
  audioCtx.sampleRate * 3,
  audioCtx.sampleRate,
);

// Fill the buffer with white noise;
// just random values between -1.0 and 1.0
for (let channel = 0; channel < myArrayBuffer.numberOfChannels; channel++) {
  // This gives us the actual array that contains the data
  const nowBuffering = myArrayBuffer.getChannelData(channel);
  for (let i = 0; i < myArrayBuffer.length; i++) {
    // Math.random() is in [0; 1.0]
    // audio needs to be in [-1.0; 1.0]
    nowBuffering[i] = Math.random() * 2 - 1;
  }
}

// Get an AudioBufferSourceNode.
// This is the AudioNode to use when we want to play an AudioBuffer
const source = audioCtx.createBufferSource();

// set the buffer in the AudioBufferSourceNode
source.buffer = myArrayBuffer;

// connect the AudioBufferSourceNode to the
// destination so we can hear the sound
source.connect(audioCtx.destination);

// start the source playing
source.start();

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

Спецификация
Web Audio API
# Звуковой буфер

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
AudioBuffer
55Параметр context поддерживался до версии 57, но теперь удален.
79 53
42Параметр context поддерживался до версии 44, но теперь удален.
14.1
55Параметр context поддерживался до версии 57, но теперь удален.
53
42Параметр context поддерживался до версии 44, но теперь удален.
14.5
6.0Параметр context поддерживался до Samsung Internet 7.0, но теперь удален.
55Параметр context поддерживался до версии 57, но теперь удален.
AudioBuffer 14 12 25 15 6 18 25 14 6 1.0 4.4.3
copyFromChannel 43 13 27 30 14.1 43 27 30 14.5 4.0 43
copyToChannel 43 13 27 30 14.1 43 27 30 14.5 4.0 43
duration 14 12 25 15 6 18 25 14 6 1.0 4.4.3
getChannelData 14 12 25 15 6 18 25 14 6 1.0 4.4.3
length 14 12 25 15 6 18 25 14 6 1.0 4.4.3
numberOfChannels 14 12 25 15 6 18 25 14 6 1.0 4.4.3
sampleRate 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/AudioBuffer

Spec-Zone.ru

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