--- title: AudioBuffer slug: Web/API/AudioBuffer translation_of: Web/API/AudioBuffer ---
{{APIRef("Web Audio API")}}
AudioBuffer
- это интерфейс короткого звукового ресурса (audio asset), находящегося в памяти и созданного из аудиофайла методом {{ domxref("AudioContext.decodeAudioData()") }}, или из исходных данных с помощью метода {{ domxref("AudioContext.createBuffer()") }}. Помещенные в AudioBuffer звуковые данные могут быть воспроизведены в {{ domxref("AudioBufferSourceNode") }}.
Объекты этого типа предназначены для хранения небольших звуковых фрагментов, обычно менее 45 секунд. Для более длинных звуков, объекты реализующие {{domxref("MediaElementAudioSourceNode")}} являются более подходящими. Этот буфер содержит данные в формате неперемещаемого IEE754 32-битного линейного ИКМ с номинальным диапазоном от -1 до +1, то есть 32-битный буфер с плавающей точкой каждого звукового фрагмента (samples) от -1.0 до 1.0. Если {{domxref("AudioBuffer")}} имеет несколько каналов, то они хранятся в отдельном буфере.
AudioBuffer
.В этом примере показывается как создать объект AudioBuffer и заполнить его случайными белыми шумами. Вы можете найти полный пример в репозитории webaudio-examples. Так же доступна live версия.
// Стерео var channels = 2; // Создает пустой двухсекундный стерео-буфер // с частотой звука AudioContext (sample rate) var frameCount = audioCtx.sampleRate * 2.0; var myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate); button.onclick = function() { // Заполняет буфер белыми шумами; // просто случайные значения от -1.0 до 1.0 for (var channel = 0; channel < channels; channel++) { // Получаем массив данных канала var nowBuffering = myArrayBuffer.getChannelData(channel); for (var i = 0; i < frameCount; i++) { // Math.random() находится в [0; 1.0] // аудио должно быть в интервале [-1.0; 1.0] nowBuffering[i] = Math.random() * 2 - 1; } } // Получает AudioBufferSourceNode. // AudioNode для проигрывания из AudioBuffer var source = audioCtx.createBufferSource(); // устанавливает буфер в AudioBufferSourceNode source.buffer = myArrayBuffer; // присоединяет AudioBufferSourceNode к // destination, чтобы мы могли слышать звук source.connect(audioCtx.destination); // Начать воспроизведение с источника source.start(); }
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('Web Audio API', '#the-audiobuffer-interface', 'AudioBuffer')}} | {{Spec2('Web Audio API')}} | Исходное определение |
Возможность | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Базовая поддержка | {{CompatChrome(14.0)}} {{property_prefix("webkit")}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(25)}} | {{CompatNo}} | {{CompatOpera(15)}} {{property_prefix("webkit")}} {{CompatOpera(22)}} |
6 {{property_prefix("webkit")}} |
|
{{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(27)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
constructor | {{CompatChrome(55.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOpera(42)}} | {{CompatUnknown}} |
Возможность | Android | Android Webview | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome для Android |
---|---|---|---|---|---|---|---|---|---|
Базовая поддержка | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile(25)}} | 1.2 | {{CompatNo}} | {{CompatVersionUnknown}} | 6 {{property_prefix("webkit")}} | {{CompatChrome(28.0)}} {{property_prefix("webkit")}} |
copyFromChannel() и copyToChannel() |
{{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile(27)}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatVersionUnknown}} | |
constructor | {{CompatNo}} | {{CompatChrome(55.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOperaMobile(42)}} | {{CompatUnknown}} | {{CompatChrome(55.0)}} |