AudioWorkletNode
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна во всех браузерах с апреля 2021 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Хотя интерфейс доступен вне безопасных контекстов, свойство BaseAudioContext.audioWorklet нет, поэтому пользовательские AudioWorkletProcessor нельзя определять вне их.
Интерфейс AudioWorkletNode API Веб-аудио представляет собой базовый класс для пользовательского AudioNode, который можно подключить к графику аудио маршрутизации вместе с другими узлами. У него есть связанный AudioWorkletProcessor, который выполняет фактическую обработку аудио в потоке обработки рендеринга Веб-аудио.
Конструктор
AudioWorkletNode()-
Создаёт новый экземпляр объекта
AudioWorkletNode.
Свойства экземпляра
Также наследует свойства от родительского класса, AudioNode.
-
AudioWorkletNode.portТолько для чтения -
Возвращает
MessagePort, используемый для двустороннего обмена сообщениями между узлом и его связаннымAudioWorkletProcessor. Другой конец доступен в свойствеportпроцессора. -
AudioWorkletNode.parametersТолько для чтения -
Возвращает
AudioParamMap— коллекцию объектовAudioParam. Они создаются при создании базовогоAudioWorkletProcessor. Если уAudioWorkletProcessorесть статический метод-геттерparameterDescriptors, массивAudioParamDescriptor, возвращаемый им, используется для создания объектовAudioParamвAudioWorkletNode. С помощью этого механизма можно сделать собственные объектыAudioParamдоступными из вашегоAudioWorkletNode. Затем вы можете использовать их значения в связанномAudioWorkletProcessor.
События
processorerror-
Срабатывает, когда в связанном
AudioWorkletProcessorвозникает ошибка. После срабатывания процессор, а следовательно, и узел, будут выдавать тишину в течение всей своей жизни.
Методы экземпляра
Также наследует методы от родительского класса, AudioNode.
Интерфейс AudioWorkletNode не определяет собственных методов.
Примеры
В этом примере мы создаём пользовательский AudioWorkletNode, который выводит случайный шум.
Сначала нам нужно определить пользовательский AudioWorkletProcessor, который будет выводить случайный шум, и зарегистрировать его. Обратите внимание, что это следует делать в отдельном файле.
// random-noise-processor.js
class RandomNoiseProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
const output = outputs[0];
output.forEach((channel) => {
for (let i = 0; i < channel.length; i++) {
channel[i] = Math.random() * 2 - 1;
}
});
return true;
}
}
registerProcessor("random-noise-processor", RandomNoiseProcessor);
Затем в нашем основном файле скрипта мы загрузим процессор, создадим экземпляр AudioWorkletNode, передав ему имя процессора, и подключим узел к аудио-графу.
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("random-noise-processor.js");
const randomNoiseNode = new AudioWorkletNode(
audioContext,
"random-noise-processor",
);
randomNoiseNode.connect(audioContext.destination);
Спецификации
| Спецификация |
|---|
| API Веб-аудио # AudioWorkletNode |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
AudioWorkletNode |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
AudioWorkletNode |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
parameters |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
port |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
processorerror_event |
66 | 79 | 76 | 53 | 14.1 | 66 | 79 | 47 | 14.5 | 9.0 | 66 |
См. также
© 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/AudioWorkletNode