OfflineAudioContext
Базовая Широко доступная *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Интерфейс OfflineAudioContext является интерфейсом AudioContext, представляющим аудио-обрабатывающую граф, построенный из связанных между собой AudioNode. В отличие от стандартного AudioContext, OfflineAudioContext не отображает аудио на аппаратном обеспечении устройства; вместо этого он генерирует его с максимальной скоростью и выводит результат в AudioBuffer.
Конструктор
OfflineAudioContext()-
Создаёт новый экземпляр
OfflineAudioContext.
Свойства экземпляра
Также наследует свойства от родительского интерфейса, BaseAudioContext.
-
OfflineAudioContext.lengthТолько для чтения -
Целое число, представляющее размер буфера в образцах-кадрах.
Методы экземпляра
Также наследует методы от родительского интерфейса, BaseAudioContext.
OfflineAudioContext.suspend()-
Планирует приостановку хода времени в контексте аудио в указанное время и возвращает промис.
OfflineAudioContext.startRendering()-
Начинает рендеринг аудио, учитывая текущие подключения и текущие запланированные изменения. Эта страница охватывает как событийную, так и основанную на промисах версию.
Устаревшие методы
OfflineAudioContext.resume()-
Возобновляет течение времени в контексте аудио, который ранее был приостановлен.
Примечание: Метод resume() всё ещё доступен — теперь он определён в интерфейсе BaseAudioContext (см. AudioContext.resume) и, таким образом, может быть использован как интерфейсом AudioContext, так и интерфейсом OfflineAudioContext.
События
Прослушивайте эти события с помощью addEventListener() или назначив обработчик событий свойству oneventname этого интерфейса:
complete-
Срабатывает, когда рендеринг контекста офлайн-аудио завершается.
Примеры
Воспроизведение аудио с помощью контекста офлайн-аудио
В этом примере мы объявляем как объект AudioContext, так и объект OfflineAudioContext. Мы используем AudioContext для загрузки аудиодорожки с помощью fetch(), а затем OfflineAudioContext для рендеринга аудио в AudioBufferSourceNode и воспроизведения дорожки. После настройки графа офлайн-аудио мы рендерим его в AudioBuffer с помощью OfflineAudioContext.startRendering().
Когда промис startRendering() выполняется, рендеринг завершён, и выходной AudioBuffer возвращается из промиса.
На этом этапе мы создаём другой контекст аудио, создаём AudioBufferSourceNode внутри него и устанавливаем его буфер равным промису AudioBuffer. Затем это воспроизводится в рамках простого стандартного аудио графа.
Примечание: Вы можете запустить полный пример в режиме реального времени или просмотреть исходный код.
// Define both online and offline audio contexts
let audioCtx; // Must be initialized after a user interaction
const offlineCtx = new OfflineAudioContext(2, 44100 * 40, 44100);
// Define constants for dom nodes
const play = document.querySelector("#play");
function getData() {
// Fetch an audio track, decode it and stick it in a buffer.
// Then we put the buffer into the source and can play it.
fetch("viper.ogg")
.then((response) => response.arrayBuffer())
.then((downloadedBuffer) => audioCtx.decodeAudioData(downloadedBuffer))
.then((decodedBuffer) => {
console.log("File downloaded successfully.");
const source = new AudioBufferSourceNode(offlineCtx, {
buffer: decodedBuffer,
});
source.connect(offlineCtx.destination);
return source.start();
})
.then(() => offlineCtx.startRendering())
.then((renderedBuffer) => {
console.log("Rendering completed successfully.");
play.disabled = false;
const song = new AudioBufferSourceNode(audioCtx, {
buffer: renderedBuffer,
});
song.connect(audioCtx.destination);
// Start the song
song.start();
})
.catch((err) => {
console.error(`Error encountered: ${err}`);
});
}
// Activate the play button
play.onclick = () => {
play.disabled = true;
// We can initialize the context as the user clicked.
audioCtx = new AudioContext();
// Fetch the data and start the song
getData();
};
Спецификации
| Спецификация |
|---|
| Web Audio API # OfflineAudioContext |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
OfflineAudioContext |
3525–57 | 12 | 25 | 2215–44 | 14.17–14.1 | 3525–57 | 25 | 2214–43 | 14.57–14.5 | 3.01.5–7.0 | 374.4–57 |
OfflineAudioContext |
3525–57 | 12 | 25 | 2215–44 | 14.17–14.1 | 3525–57 | 25 | 2214–43 | 14.57–14.5 | 3.01.5–7.0 | 374.4–57 |
complete_event |
25 | 12 | 25 | 15 | 7 | 25 | 25 | 14 | 7 | 1.5 | 4.4 |
length |
51 | 14 | 49 | 38 | 14.1 | 51 | 49 | 41 | 14.5 | 5.0 | 51 |
resume |
41 | 14 | 28 | 9 | 41 | 28 | 9 | 4.0 | 41 | ||
startRendering |
25 | 12 | 25 | 15 | 7 | 25 | 25 | 14 | 7 | 1.5 | 4.4 |
suspend |
41 | 14 | Нет | 28 | 9 | 41 | Нет | 28 | 9 | 4.0 | 41 |
См. также
© 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/OfflineAudioContext