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

The OfflineAudioContext interface is an AudioContext interface representing an audio-processing graph built from linked together AudioNodes. In contrast with a standard AudioContext, an OfflineAudioContext doesn't render the audio to the device hardware; instead, it generates it, as fast as it can, and outputs the result to an AudioBuffer.

コンストラクター

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

プロパティ

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

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

イベントハンドラー

OfflineAudioContext.oncomplete
Is an EventHandler called when processing is terminated, that is when the complete event (of type OfflineAudioCompletionEvent) is raised, after the event-based version of OfflineAudioContext.startRendering() is used.

メソッド

親インターフェースである 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();

仕様

Specification Status Comment
Web Audio API
OfflineAudioContext の定義
草案 Initial definition

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
基本対応Chrome 完全対応 14Edge 完全対応 ありFirefox 完全対応 25IE 未対応 なしOpera 完全対応 15Safari 完全対応 6WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 15Safari 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
lengthChrome 完全対応 51Edge 完全対応 ありFirefox 完全対応 ありIE 未対応 なしOpera 完全対応 38Safari 未対応 なしWebView Android 完全対応 51Chrome Android 完全対応 51Edge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 38Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
oncompleteChrome 完全対応 14Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 15Safari 完全対応 6WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 15Safari 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 完全対応 15Safari iOS ? Samsung Internet Android 完全対応 あり

凡例

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

参考

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

このページの貢献者: niusounds
最終更新者: niusounds,