A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.cdn.mozilla.net/ja/docs/Web/API/BaseAudioContext/decodeAudioData below:

BaseAudioContext: decodeAudioData() メソッド - Web API

BaseAudioContext: decodeAudioData() メソッド

Baseline Widely available

decodeAudioData() は BaseAudioContext のメソッドで、 ArrayBuffer に書き込まれた音声ファイルデータを非同期にデコードするために使用されます。この場合、ArrayBuffer は fetch()、XMLHttpRequest、FileReader などから読み込まれます。デコードされた AudioBuffer は AudioContext のサンプリングレートにリサンプリングされ、コールバックやプロミスに渡されます。

この方法は、オーディオトラックからウェブオーディオ API 用のオーディオソースを作成する際に推奨される方法です。この方法は、音声ファイルの断片的なデータではなく、完全なファイルデータに対してのみ動作します。

この関数は、音声データやエラーメッセージを非同期に返す 2 つの方法を実装しています。音声データで履行された Promise を返し、成功や失敗を処理するコールバック引数も受け入れます。この関数とのインターフェイスの主なメソッドは Promise の返値で、コールバック引数は古い理由から指定されたものです。

構文
// 古いコールバックの構文:
decodeAudioData(arrayBuffer)

// 新しいプロミスベースの構文:
decodeAudioData(arrayBuffer, successCallback)
decodeAudioData(arrayBuffer, successCallback, errorCallback)
引数
arrayBuffer

デコードする音声データが入った ArrayBuffer です。通常は fetch()、XMLHttpRequest、FileReader から取得します。

successCallback 省略可

デコードが完了すると呼び出されるコールバック関数です。このコールバックの引数は 1 つで、 AudioBuffer であり decodedData (デコードされた PCM 音声データ)を表します。通常は、デコードされたデータを AudioBufferSourceNode に入れて、そこから再生したり、好きなように操作したりすることができます。

errorCallback 省略可

任意のエラーコールバックで、音声データのデコードでエラーが発生すると呼び出されます。

返値

decodedData で履行される Promise オブジェクトです。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() を用いて音声ファイルを取得し、コールバックベースの decodeAudioData() を用いて AudioBuffer にデコードします。コールバックでは、デコードしたバッファーが再生されます。

メモ: 完全な例をライブで実行したり、ソースを表示したりすることができます。

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}`);
  }
}
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4