AudioContext
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
* Some parts of this feature may have varying levels of support.
Интерфейс AudioContext можно представить как граф, состоящий из связанных между собой узлов AudioNode
. С помощью этого интерфейса можно контролировать как создание узлов, из которых состоит AudioContext, так и контролировать обработку и декодирование звука. Необходимо создать AudioContext перед тем как делать что-либо ещё со звуком, так как всё что происходит при обработке звука, происходит внутри AudioContext.
AudioContext может выступать как обработчик событий, и он реализует интерфейс EventTarget
.
Свойства
AudioContext.currentTime
Только для чтения-
Содержит число с типом double, которое содержит значение времени в секундах, полученное от часов компьютера клиента. Это значение не может быть изменено никаким образом, оно только для чтения.
AudioContext.destination
Только для чтения-
Содержит ссылку на
AudioDestinationNode
, представляющий собой точку назначения для всего аудио в этом контексте. Может рассматриваться как, например, аудио-воспроизводящее устройство. AudioContext.listener
Только для чтения-
Содержит ссылку на объект
AudioListener
, применяется для ориентирования в 3D-пространстве. AudioContext.sampleRate
Только для чтения-
Содержит число с типом float, представляющее собой частоту сэмплирования звука (sample rate), используемую всеми узлами в этом контексте. Это значение только для чтения и не может быть изменено.
AudioContext.mozAudioChannelType
Не стандартно Только для чтения-
Содержит ссылку на аудио-канал, который будет использоваться для воспроизведения звука в
AudioContext
на устройствах с FireFox OS. Только для чтения.
Методы
Также реализованы методы из интерфейса EventTarget
.
AudioContext.createBuffer()
-
Создаёт новый пустой объект
AudioBuffer
, в который затем могут помещаться данные для воспроизведения черезAudioBufferSourceNode
. AudioContext.createBufferSource()
-
Создаёт объект
AudioBufferSourceNode
, который может быть использован для воспроизведения и обработки данных звукового потока, содержащегося в объектеAudioBuffer
. Объекты типаAudioBuffer
создаются с помощью методаAudioContext.createBuffer
или возвращаются методомAudioContext.decodeAudioData
, когда декодирование аудио-дорожки успешно завершено. AudioContext.createMediaElementSource()
-
Создаёт объект
MediaElementAudioSourceNode
, ассоциированный сHTMLMediaElement
. Может использоваться для воспроизведения или манипулирования данными звукового потока из<video>
или<audio>
элементов. AudioContext.createMediaStreamSource()
-
Создаёт объект
MediaStreamAudioSourceNode
, ассоциированный сMediaStream
, и который представляет аудио-поток, поступающий от подключённого к клиентскому компьютеру микрофона или других источников. AudioContext.createMediaStreamDestination()
-
Создаёт объект
MediaStreamAudioDestinationNode
, ассоциированный сMediaStream
и представляющий собой аудио-поток, который можно сохранить в локальный файл или передать на другой компьютер. AudioContext.createScriptProcessor()
-
Создаёт объект
ScriptProcessorNode
, который может быть использован для прямой обработки звука с помощью JavaScript. AudioContext.createAnalyser()
-
Создаёт объект
AnalyserNode
, который может быть использован для получения времени воспроизведения и частоты воспроизводимого звука, что, в свою очередь может быть использовано для визуализации звукового потока. AudioContext.createBiquadFilter()
-
Создаёт объект
BiquadFilterNode
, который представляет собой фильтр второго порядка, конфигурируемый как фильтр верхних частот, как фильтр нижних частот, фильтр полосы пропускания и так далее. AudioContext.createChannelMerger()
-
Создаёт объект
ChannelMergerNode
, который используется для слияния каналов из множества аудио-потоков в один аудио-поток. AudioContext.createChannelSplitter()
-
Создаёт объект
ChannelSplitterNode
, который используется для доступа к отдельным каналам аудио-потока для их дальнейшей обработки по отдельности. AudioContext.createConvolver()
-
Создаёт объект
ConvolverNode
, который может быть использован для применения эффекта свёртки (convolution effect) к аудио-графу. Например, для создания эффекта реверберации. AudioContext.createDelay()
-
Создаёт объект
DelayNode
, который может быть использован для задержки входящего аудио-сигнала на определённое время. Этот узел также удобен для создания петель обратной связи (feedback loops) в Web Audio графе. AudioContext.createDynamicsCompressor()
-
Создаёт объект
DynamicsCompressorNode
, который может быть использован для акустической компрессии аудио-сигнала. AudioContext.decodeAudioData()
-
Асинхронно декодирует данные из аудио-файла, находящиеся в
ArrayBuffer
. В этом случае ArrayBuffer заполняется при ответе на запросXMLHttpRequest
.и установке
атрибутаresponseType
вarraybuffer
. Этот метод работает только с полными аудио-файлами и не работает с их фрагментами. AudioContext.createGain()
-
Создаёт объект
GainNode
, который может быть использован для контроля общей громкости во всём аудио-графе. AudioContext.createOscillator()
-
Создаёт объект
OscillatorNode
, источник, представляющий собой периодическую волну звукового сигнала. AudioContext.createPanner()
-
Создаёт объект
PannerNode
, который используется для пространственного определения аудио-потока в трёхмерном пространстве. AudioContext.createPeriodicWave()
-
Создаёт объект
PeriodicWave
, используемый для определения периодической волны звукового сигнала, которая, в свою очередь, используется для определения вывода вOscillatorNode
. AudioContext.createWaveShaper()
-
Создаёт объект
WaveShaperNode
, который может быть использован для создания эффектов нелинейных звуковых искажений. AudioContext.createAudioWorker()
-
Создаёт объект
AudioWorkerNode
, который может взаимодействовать с потоком web worker для непосредственных генерации, обработки или анализа аудио данных. Этот метод был добавлен в спецификацию 29 августа 2014 года и не в каждом браузере пока поддерживается.
Устаревшие методы
AudioContext.createJavaScriptNode()
-
Создаёт объект
JavaScriptNode
, используемый для непосредственной обработки звука в JavaScript. Этот метод устарел и заменён наAudioContext.createScriptProcessor()
. AudioContext.createWaveTable()
-
Создаёт объект
WaveTableNode
, для определения периодической волны звукового сигнала. Этот метод устарел и заменён наAudioContext.createPeriodicWave()
.
Примеры
Простая декларация аудио-контекста:
var audioCtx = new AudioContext();
Кросс-браузерный вариант:
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();
var oscillatorNode = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
var finish = audioCtx.destination;
// etc.
Спецификации
Specification |
---|
Web Audio API # AudioContext |
Совместимость с браузерами
BCD tables only load in the browser