Spec-Zone.ru › Web APIs

BaseAudioContext: метод decodeAudioData()

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

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

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

Метод decodeAudioData() интерфейса BaseAudioContext используется для асинхронного декодирования данных аудиофайла, содержащихся в ArrayBuffer, загруженного с помощью fetch(), XMLHttpRequest или FileReader. Декодированный AudioBuffer пересэмплируется до частоты дискретизации AudioContext, а затем передается в коллбек или промис.

Это предпочтительный метод создания источника аудио для Web Audio API из аудиодорожки. Этот метод работает только с полными данными файла, а не фрагментами.

Эта функция реализует два альтернативных способа асинхронного возвращения данных аудио или сообщений об ошибках: она возвращает Promise, который выполняется с данными аудио, а также принимает аргументы коллбека для обработки успеха или неудачи. Основной метод взаимодействия с этой функцией — через возвращаемое значение Promise, а параметры коллбека предоставляются по соображениям совместимости со старыми версиями.

Синтаксис

// Promise-based syntax returns a Promise:
decodeAudioData(arrayBuffer)

// Callback syntax has no return value:
decodeAudioData(arrayBuffer, successCallback)
decodeAudioData(arrayBuffer, successCallback, errorCallback)

Параметры

arrayBuffer

ArrayBuffer, содержащий аудиоданные для декодирования, обычно получаемый с помощью fetch(), XMLHttpRequest или FileReader.

successCallback Необязательно

Функция обратного вызова, которая вызывается при успешном завершении декодирования. Единственный аргумент этого коллбека — AudioBuffer, представляющий decodedData (декодированные PCM-аудиоданные). Обычно вы захотите поместить декодированные данные в AudioBufferSourceNode, из которого их можно воспроизводить и обрабатывать по вашему желанию.

errorCallback Необязательно

Необязательный коллбек для обработки ошибок при декодировании аудиоданных.

Возвращаемое значение

Объект Promise, который выполняется с decodedData. Если вы используете синтаксис XHR, вы проигнорируете это возвращаемое значение и вместо этого используете функцию обратного вызова.

Примеры

В этом разделе мы сначала рассмотрим синтаксис на основе промисов, а затем на основе коллбеков.

Синтаксис на основе промисов

В этом примере loadAudio() использует fetch() для получения аудиофайла и декодирует его в AudioBuffer. Затем он кеширует audioBuffer в глобальной переменной buffer для последующего воспроизведения.

Примечание: Вы можете запустить весь пример онлайн или просмотреть исходный код.

let audioCtx;
let buffer;
let source;

async function loadAudio() {
  try {
    // Load an audio file
    const response = await fetch("viper.mp3");
    // Decode it
    buffer = await audioCtx.decodeAudioData(await response.arrayBuffer());
  } catch (err) {
    console.error(`Unable to fetch the audio file. Error: ${err.message}`);
  }
}

Синтаксис на основе коллбеков

В этом примере loadAudio() использует fetch() для получения аудиофайла и декодирует его в AudioBuffer с помощью версии decodeAudioData() на основе коллбеков. В коллбеке он воспроизводит декодированный буфер.

Примечание: Вы можете запустить весь пример онлайн или просмотреть исходный код.

let audioCtx;
let source;

function playBuffer(buffer) {
  source = audioCtx.createBufferSource();
  source.buffer = buffer;
  source.connect(audioCtx.destination);
  source.loop = true;
  source.start();
}

async function loadAudio() {
  try {
    // Load an audio file
    const response = await fetch("viper.mp3");
    // Decode it
    audioCtx.decodeAudioData(await response.arrayBuffer(), playBuffer);
  } catch (err) {
    console.error(`Unable to fetch the audio file. Error: ${err.message}`);
  }
}

Спецификации

Спецификация
Web Audio API
# dom-baseaudiocontext-decodeaudiodata

Совместимость с браузерами

Десктоп Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
decodeAudioData 14 12 25 15 6 18 25 14 6 1.0 4.4.3
returns_promise 49 12 36 36 14.1 49 36 36 14.5 5.0 49

См. также

  • Использование 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/BaseAudioContext/decodeAudioData

Spec-Zone.ru

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