この翻訳は不完全です。英語から この記事を翻訳 してください。

OfflineAudioContext インターフェイスは AudioContext インターフェイスの一種で、AudioNode をつなげて造られる音声処理グラフを表しています。通常の AudioContext と異なり、OfflineAudioContext で処理された音声はハードウェアから再生されることはありません。処理された結果は AudioBuffer に出力されます。
 

コンストラクター

OfflineAudioContext.OfflineAudioContext()
新しい OfflineAudioContext のインスタンスを作成します。

プロパティ

親インターフェイスである BaseAudioContext からのプロパティも継承します。

OfflineAudioContext.length 読取専用
サンプルフレーム数で表されるバッファの大きさの整数値。

イベントハンドラー

OfflineAudioContext.oncomplete

処理終了時に呼ばれる EventHandler イベントハンドラーです。 complete イベント (型は OfflineAudioCompletionEvent )を受け取ります。このイベントは、OfflineAudioContext.startRendering() のイベント駆動型が利用された場合、処理終了時に送出さます。

メソッド

親インターフェースである BaseAudioContext からのメソッドも継承します。

OfflineAudioContext.resume()
Resumes the progression of time in an audio context that has previously been suspended.
OfflineAudioContext.suspend()
Schedules a suspension of the time progression in the audio context at the specified time and returns a promise.
OfflineAudioContext.startRendering()
Starts rendering the audio, taking into account the current connections and the current scheduled changes. This page covers both the event-based version and the promise-based version.

この例では、AudioContext と OfflineAudioContext 二つのオブジェクトを作っています。AudioContext はXHR (AudioContext.decodeAudioData)でオーディオトラックを読み込むのに使い、OfflineAudioContext でAudioBufferSourceNode の中に音声をレンダリングし、そしてその音声を再生します。オフライン音声グラフのセットアップが終わった後、OfflineAudioContext.startRendering を使って AudioBuffer にレンダリングする必要があります。

startRendering() のPromiseが解決されるとレンダリングは完了し、出力結果の AudioBuffer がPromiseの結果として戻されます。

At this point we create another audio context, create an AudioBufferSourceNode inside it, and set its buffer to be equal to the promise AudioBuffer. This is then played as part of a simple standard audio graph.

Note: For a working example, see our offline-audio-context-promise Github repo (see the source code too.)

// オンラインとオフラインのオーディオコンテキストを定義

var audioCtx = new AudioContext();
var offlineCtx = new OfflineAudioContext(2, 44100 * 40, 44100);

source = offlineCtx.createBufferSource();

// XHRで音声トラックを読み込み、
// decodeAudioData でデコードして OfflineAudioContext で再生する。

function getData() {
  request = new XMLHttpRequest();

  request.open('GET', 'viper.ogg', true);

  request.responseType = 'arraybuffer';

  request.onload = function() {
    var audioData = request.response;

    audioCtx.decodeAudioData(audioData, function(buffer) {
      myBuffer = buffer;
      source.buffer = myBuffer;
      source.connect(offlineCtx.destination);
      source.start();
      //source.loop = true;
      offlineCtx.startRendering().then(function(renderedBuffer) {
        console.log('Rendering completed successfully');
        var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
        var song = audioCtx.createBufferSource();
        song.buffer = renderedBuffer;

        song.connect(audioCtx.destination);

        play.onclick = function() {
          song.start();
        }
      }).catch(function(err) {
          console.log('Rendering failed: ' + err);
          // 注意: OfflineAudioContext の startRendering が二回以上呼び出されるとPromise はリジェクトされます。
      });
    });
  }

  request.send();
}

// getData で処理を開始する。

getData();

仕様書

仕様書 状態 備考
Web Audio API
OfflineAudioContext の定義
草案 初回定義

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
OfflineAudioContextChrome 完全対応 14Edge 完全対応 ありFirefox 完全対応 25IE 未対応 なしOpera 完全対応 15Safari 完全対応 6WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 14Safari iOS ? Samsung Internet Android 完全対応 あり
OfflineAudioContext() constructorChrome 完全対応 55
補足
完全対応 55
補足
補足 Before Chrome 59, the default values were not supported.
Edge ? Firefox 完全対応 53IE 未対応 なしOpera 完全対応 42Safari ? WebView Android 完全対応 55
補足
完全対応 55
補足
補足 Before version 59, the default values were not supported.
Chrome Android 完全対応 55
補足
完全対応 55
補足
補足 Before Chrome 59, the default values were not supported.
Edge Mobile ? Firefox Android 完全対応 53Opera Android 完全対応 42Safari iOS ? Samsung Internet Android 完全対応 6.0
complete eventChrome 完全対応 14Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 15Safari 完全対応 6WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 14Safari iOS ? Samsung Internet Android 完全対応 あり
lengthChrome 完全対応 51Edge 完全対応 14Firefox 完全対応 ありIE 未対応 なしOpera 完全対応 38Safari 未対応 なしWebView Android 完全対応 51Chrome Android 完全対応 51Edge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 41Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
oncompleteChrome 完全対応 14Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 15Safari 完全対応 6WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 14Safari iOS ? Samsung Internet Android 完全対応 あり
resumeChrome 完全対応 49Edge 完全対応 ありFirefox 未対応 なしIE 未対応 なしOpera 完全対応 36Safari 未対応 なしWebView Android 完全対応 49Chrome Android 完全対応 49Edge Mobile 完全対応 ありFirefox Android 未対応 なしOpera Android 完全対応 36Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
suspendChrome 完全対応 49Edge 完全対応 ありFirefox 未対応 なしIE 未対応 なしOpera 完全対応 36Safari 未対応 なしWebView Android 完全対応 49Chrome Android 完全対応 49Edge Mobile 完全対応 ありFirefox Android 未対応 なしOpera Android 完全対応 36Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
startRenderingChrome 完全対応 14Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 15Safari 完全対応 6WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 14Safari iOS ? Samsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mdnwebdocs-bot, mfuji09, chikoski, niusounds
最終更新者: mdnwebdocs-bot,