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.
Свойства
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> |
Совместимость с браузерами
Loading…