AudioContext: метод getOutputTimestamp()
Базовая поддержка Широко распространена
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Метод getOutputTimestamp() интерфейса AudioContext возвращает новый объект AudioTimestamp, содержащий две значения временных меток аудио, относящиеся к текущему аудиоконтексту.
Два значения следующие:
-
AudioTimestamp.contextTime: Время текущей выборки кадра, в данный момент рендерится устройством аудиовывода (т.е., позиция выходного аудиопотока), в тех же единицах и с таким же началом, что и времяAudioContext.currentTimeконтекста. По сути, это время после создания аудиоконтекста. -
AudioTimestamp.performanceTime: Оценка момента, когда выборка кадра, соответствующая сохраненному значениюcontextTime, была рендерирована устройством аудиовывода, в тех же единицах и с таким же началом, что иperformance.now(). Это время после первоначального рендеринга документа, содержащего аудиоконтекст.
Синтаксис
getOutputTimestamp()
Параметры
Нет.
Возвращаемое значение
Объект AudioTimestamp, который имеет следующие свойства.
-
contextTime: Точка во временной системе координатcurrentTimeдляBaseAudioContext; время после создания аудиоконтекста. -
performanceTime: Точка во временной системе координат интерфейсаPerformance; время после первоначального рендеринга документа, содержащего аудиоконтекст
Примеры
В следующем коде мы начинаем воспроизведение аудиофайла после нажатия кнопки воспроизведения и запускаем цикл requestAnimationFrame, который постоянно выводит значения contextTime и performanceTime.
Полный код этого примера можно найти по адресу output-timestamp (посмотреть онлайн).
// 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
}
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-audiocontext-getoutputtimestamp |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getOutputTimestamp |
57 | 79 | 70 | 44 | 14.1 | 57 | 79 | 43 | 14.5 | 7.0 | 57 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/getOutputTimestamp