AudioContext: getOutputTimestamp() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

getOutputTimestamp()AudioContext インターフェイスのメソッドで、現在の音声コンテキストに関係する 2 つの音声タイムスタンプが格納された新しい AudioTimestamp オブジェクトを返します。

2 つの値とは、以下のものです。

  • AudioTimestamp.contextTime: コンテキストの AudioContext.currentTime で用いられるのと同じ単位と始点の、現在音声出力デバイスで出力されているサンプルフレームの時刻(すなわち、出力音声ストリームの位置)です。 基本的には、これは音声コンテキストが最初に作られてからの時間です。
  • AudioTimestamp.performanceTime: performance.now() で用いられるのと同じ単位と始点の、contextTime の値に対応するサンプルフレームが音声出力デバイスで出力される時刻の推定値です。これは、音声コンテキストを含む文章が最初に描画されてからの時間です。

構文

js
getOutputTimestamp()

引数

なし

返値

AudioTimestamp オブジェクトです。このオブジェクトは以下のプロパティを持ちます。

  • contextTime: BaseAudioContextcurrentTime で用いられる時間座標系上の点で、音声コンテキストが最初に作られてからの時間です。
  • performanceTime: Performance インターフェイスで用いられる時間座標系上の点で、音声コンテキストを含む文章が最初に描画されてからの時間です。

以下のコードでは、play ボタンが押されると音声ファイルの再生を開始し、requestAnimationFrame によるループを開始します。このループでは、継続して contextTimeperformanceTime を出力します。

この例のコード全体は output-timestamp で見ることができます。(動く例を見る)

js
// play ボタンを押す
playBtn.addEventListener("click", () => {
  // ユーザーの操作があったので、audioCtx を作ることができる
  if (!audioCtx) {
    audioCtx = new AudioContext();
  }
  source = new AudioBufferSourceNode(audioCtx);
  getData();
  source.start(0);
  playBtn.disabled = true;
  stopBtn.disabled = false;
  rAF = requestAnimationFrame(outputTimestamps);
});

// stop ボタンを押す
stopBtn.addEventListener("click", () => {
  source.stop(0);
  playBtn.disabled = false;
  stopBtn.disabled = true;
  cancelAnimationFrame(rAF);
});

// タイムスタンプ出力用の補助関数
function outputTimestamps() {
  const ts = audioCtx.getOutputTimestamp();
  output.textContent = `Context time: ${ts.contextTime} | Performance time: ${ts.performanceTime}`;
  rAF = requestAnimationFrame(outputTimestamps); // 自身を再登録する
}

仕様書

Specification
Web Audio API
# dom-audiocontext-getoutputtimestamp

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
getOutputTimestamp

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support