Body ミックスインの arrayBuffer() メソッドは、Response ストリームを取得して、完全に読み取ります。その上で、ArrayBuffer で解決される promise を返します。

構文

response.arrayBuffer().then(function(buffer) {
  // buffer を使用した何らかの処理
});

引数

なし。

戻り値

ArrayBuffer で解決される promise。

fetch array buffer live では、Play ボタンを配置して、押下されると getData() 関数が実行されるようになっています。ただ、再生される前にオーディオファイル全体がダウンロードされるのを待っていることに注意してください。ダウンロード中に演奏を開始したい(つまりストリーム再生したい)なら、次のようにHTMLAudioElement を使いましょう:

new Audio(music.ogg).play()

getData() 関数内では、Request.Request コンストラクターを使用して新しいリクエストオブジェクトを生成してから、OGG ミュージックトラックを取得しようとします。オーディオバッファーソースを生成するために、AudioContext.createBufferSource も使用しています。取得が成功した場合、arrayBuffer() を使用してレスポンスの ArrayBuffer を読み取り、AudioContext.decodeAudioData を使用してオーディオデータをデコードした上で、オーディオバッファソースのバッファ(source.buffer)に設定しています。その後、AudioContext.destination にソースを接続します。

getData() の実行が完了すると、start(0) でオーディオソースの再生を開始した後、実行中に再度再生ボタンをクリックできないようにするために(これはしばしばエラーの原因になります)ボタンを無効化しています。

function getData() {
  source = audioCtx.createBufferSource();

  var myRequest = new Request('viper.ogg');

  fetch(myRequest).then(function(response) {
    return response.arrayBuffer();
  }).then(function(buffer) {
      audioCtx.decodeAudioData(buffer, function(decodedData) {
        source.buffer = decodedData;
        source.connect(audioCtx.destination);
      });
    });
};

// wire up buttons to stop and play audio

play.onclick = function() {
  getData();
  source.start(0);
  play.setAttribute('disabled', 'disabled');
}

仕様

仕様 状態 コメント
Fetch
arrayBuffer() の定義
現行の標準  

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ありFirefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 完全対応 ありFirefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連項目

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

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