MediaSession: метод setPositionState()
Ограниченная доступность
Эта функция не является Baseline, так как она не работает во всех популярных браузерах.
Метод setPositionState() интерфейса MediaSession используется для обновления текущей позиции и скорости воспроизведения медиа в документе для отображения устройством пользователя в любом интерфейсе, отображающем информацию о текущем воспроизведении. Это особенно полезно, если ваш код реализует проигрыватель для типа медиа, не поддерживаемого браузером напрямую.
Вызывайте этот метод на объекте mediaSession объекта navigator.
Синтаксис
setPositionState() setPositionState(stateDict)
Параметры
stateDictНеобязательно-
Объект, предоставляющий обновлённую информацию о позиции и скорости воспроизведения текущего медиа. Если объект пуст, существующая информация о состоянии воспроизведения очищается. Этот объект может содержать следующие параметры:
durationНеобязательно-
Значение с плавающей точкой, представляющее полную продолжительность текущего медиа в секундах. Это значение всегда должно быть положительным, положительная бесконечность (
Infinity) указывает на медиа без определённого конца, например, прямую трансляцию. playbackRateНеобязательно-
Значение с плавающей точкой, указывающее скорость воспроизведения медиа в отношении его нормальной скорости. Таким образом, значение 1 соответствует нормальной скорости, 2 — удвоенной скорости и т. д. Отрицательные значения указывают на обратное воспроизведение; -1 — воспроизведение с нормальной скоростью, но в обратном направлении, -2 — в два раза быстрее в обратном направлении и т. д.
positionНеобязательно-
Значение с плавающей точкой, указывающее последнюю зарегистрированную позицию воспроизведения медиа в секундах. Это значение всегда должно быть положительным.
Возвращаемое значение
None (undefined).
Исключения
TypeError-
Эта ошибка может возникнуть в следующих ситуациях:
- У указанного объекта отсутствует
duration, он отрицательный илиnull. - Его
positionотрицательное или больше, чемduration. - Его
playbackRateравно нулю.
- У указанного объекта отсутствует
Примеры
Ниже представлена функция, обновляющая состояние позиции текущего трека MediaSession.
function updatePositionState() {
navigator.mediaSession.setPositionState({
duration: audioEl.duration,
playbackRate: audioEl.playbackRate,
position: audioEl.currentTime,
});
}
Мы можем использовать эту функцию при обновлении MediaMetadata и внутри обратных вызовов для действий, как показано ниже.
navigator.mediaSession.setActionHandler("seekbackward", (details) => {
// our time to skip
const skipTime = details.seekOffset || 10;
// set our position
audioEl.currentTime = Math.max(audioEl.currentTime - skipTime, 0);
updatePositionState();
});
Спецификации
| Спецификация |
|---|
| Media Session # dom-mediasession-setpositionstate |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
setPositionState |
81 | 81 | 82 | 68 | 15 | 57 | 82Firefox предоставляет доступ к API, но не предоставляет соответствующий интерфейс управления медиа для пользователя. |
43 | 15 | 7.0 | Нет |
© 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/MediaSession/setPositionState