AudioContext: getOutputTimestamp() 方法

基线 广泛可用

此功能已相当成熟,并且可在许多设备和浏览器版本上运行。它自 2021 年 4 月.

报告反馈

getOutputTimestamp() 方法是 AudioContext 接口的方法,它返回一个新的 AudioTimestamp 对象,该对象包含两个与当前音频上下文相关的音频时间戳值。

  • 这两个值如下所示
  • AudioTimestamp.contextTime: 当前由音频输出设备渲染的样本帧的时间(即输出音频流位置),以与上下文 AudioContext.currentTime 相同的单位和原点。基本上,这是音频上下文首次创建后的时间。

语法

AudioTimestamp.performanceTime: 对与存储的 contextTime 值相对应的样本帧由音频输出设备渲染的时刻的估计,以与 performance.now() 相同的单位和原点。这是包含音频上下文的文档首次渲染后的时间。
getOutputTimestamp()

js

参数

无。

返回值

  • 一个 AudioTimestamp 对象,它具有以下属性。
  • contextTime: BaseAudioContextcurrentTime 的时间坐标系中的一个点;音频上下文首次创建后的时间。

示例

performanceTime: Performance 接口的时间坐标系中的一个点;包含音频上下文的文档首次渲染后的时间

在以下代码中,我们单击播放按钮后开始播放音频文件,并启动一个 requestAnimationFrame 循环运行,该循环不断输出 contextTimeperformanceTime

AudioTimestamp.performanceTime: 对与存储的 contextTime 值相对应的样本帧由音频输出设备渲染的时刻的估计,以与 performance.now() 相同的单位和原点。这是包含音频上下文的文档首次渲染后的时间。
// Press the play button
playBtn.addEventListener("click", () => {
  // We can create the audioCtx as there has been some user action
  if (!audioCtx) {
    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
}

规范

您可以在 output-timestamp 上查看此示例的完整代码(也可以在线查看)。
Web Audio API
# 规范

浏览器兼容性

dom-audiocontext-getoutputtimestamp