Spec-Zone.ru › Web APIs

OfflineAudioContext

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Интерфейс OfflineAudioContext является интерфейсом AudioContext, представляющим аудио-обрабатывающую граф, построенный из связанных между собой AudioNode. В отличие от стандартного AudioContext, OfflineAudioContext не отображает аудио на аппаратном обеспечении устройства; вместо этого он генерирует его с максимальной скоростью и выводит результат в AudioBuffer.

EventTarget BaseAudioContext OfflineAudioContext

Конструктор

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
40Метод существует, но всегда отклоняется с NotSupportedError. См. ошибку 1265406.
28 9 41
40Метод существует, но всегда отклоняется с NotSupportedError. См. ошибку 1265406.
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

См. также

  • Использование Web Audio API

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API