This page was translated from English by the community.Learn more and join the MDN Web Docs community.
AudioContext
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since апрель 2021 г..
* Some parts of this feature may have varying levels of support.
Интерфейс AudioContext можно представить как граф, состоящий из связанных между собой узловAudioNode. С помощью этого интерфейса можно контролировать как создание узлов, из которых состоит AudioContext, так и контролировать обработку и декодирование звука. Необходимо создать AudioContext перед тем как делать что-либо ещё со звуком, так как всё что происходит при обработке звука, происходит внутри AudioContext.
AudioContext может выступать как обработчик событий, и он реализует интерфейсEventTarget.
In this article
Свойства
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> |