AudioContext: getOutputTimestamp()-Methode

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.

Die getOutputTimestamp()-Methode des AudioContext-Interfaces gibt ein neues AudioTimestamp-Objekt zurück, das zwei Audio-Zeitstempelwerte in Bezug auf den aktuellen Audiokontext enthält.

Die beiden Werte sind wie folgt:

  • AudioTimestamp.contextTime: Die Zeit des aktuell vom Audioausgabegerät gerenderten Sample-Frames (d.h. Position des Ausgangsaudiostreams), in denselben Einheiten und Ursprüngen wie AudioContext.currentTime des Kontexts. Im Grunde ist dies die Zeit, nachdem der Audiokontext erstmals erstellt wurde.
  • AudioTimestamp.performanceTime: Eine Schätzung des Moments, an dem der Sample-Frame, der dem gespeicherten contextTime-Wert entspricht, vom Audioausgabegerät gerendert wurde, in denselben Einheiten und Ursprüngen wie performance.now(). Dies ist die Zeit, nachdem das Dokument, das den Audiokontext enthält, erstmals gerendert wurde.

Syntax

js
getOutputTimestamp()

Parameter

Keine.

Rückgabewert

Ein AudioTimestamp-Objekt, das die folgenden Eigenschaften hat.

  • contextTime: Ein Punkt im Zeitkoordinatensystem von currentTime für den BaseAudioContext; die Zeit, nachdem der Audiokontext erstmals erstellt wurde.
  • performanceTime: Ein Punkt im Zeitkoordinatensystem eines Performance-Interfaces; die Zeit, nachdem das Dokument, das den Audiokontext enthält, erstmals gerendert wurde.

Beispiele

Im folgenden Code beginnen wir, eine Audiodatei abzuspielen, nachdem eine Abspieltaste geklickt wurde, und starten eine requestAnimationFrame-Schleife, die ständig die Werte contextTime und performanceTime ausgibt.

Sie können den vollständigen Code dieses Beispiels bei output-timestamp sehen (siehe auch live).

js
// Press the play button
playBtn.addEventListener("click", () => {
  // We can create the audioCtx as there has been some user action
  audioCtx ??= new AudioContext();
  source = new AudioBufferSourceNode(audioCtx);
  getData();
  source.start(0);
  playBtn.disabled = true;
  stopBtn.disabled = false;
  rAF = requestAnimationFrame(outputTimestamps);
});

// Press the stop button
stopBtn.addEventListener("click", () => {
  source.stop(0);
  playBtn.disabled = false;
  stopBtn.disabled = true;
  cancelAnimationFrame(rAF);
});

// Helper function to output timestamps
function outputTimestamps() {
  const ts = audioCtx.getOutputTimestamp();
  output.textContent = `Context time: ${ts.contextTime} | Performance time: ${ts.performanceTime}`;
  rAF = requestAnimationFrame(outputTimestamps); // Reregister itself
}

Spezifikationen

Specification
Web Audio API
# dom-audiocontext-getoutputtimestamp

Browser-Kompatibilität