MediaSession:setPositionState() 方法
MediaSession 介面的 setPositionState() 方法用於更新當前文件的媒體播放位置和速度,以便在提供正在進行的媒體詳情的任何使用者裝置介面上進行展示。如果您的程式碼實現了瀏覽器不直接支援的媒體型別的播放器,這將特別有用。
在 navigator 物件的 mediaSession 物件上呼叫此方法。
語法
js
setPositionState()
setPositionState(stateDict)
引數
stateDict可選-
一個物件,提供關於文件正在進行的媒體的播放位置和速度的更新資訊。如果物件為空,則會清除現有的播放狀態資訊。此物件可以包含以下引數:
duration可選-
一個浮點數值,表示當前媒體的總時長(以秒為單位)。此值應始終為正數,正無窮大(
Infinity)表示沒有定義結束時間的媒體,例如直播流。 playbackRate可選-
一個浮點數值,表示媒體的播放速率,相對於其正常播放速度的比率。因此,值為 1 表示正常速度播放,值為 2 表示雙倍速度播放,依此類推。負值表示媒體正在反向播放;-1 表示以正常速度反向播放,-2 表示以雙倍速度反向播放,依此類推。
position可選-
一個浮點數值,表示媒體最後報告的播放位置(以秒為單位)。此值必須始終為正數。
返回值
無(undefined)。
異常
TypeError-
此錯誤可能在多種情況下發生:
- 指定的物件的
duration缺失、為負數或為null。 - 其
position要麼為負數,要麼大於duration。 - 其
playbackRate為零。
- 指定的物件的
示例
下面是一個更新當前 MediaSession 軌道位置狀態的函式。
js
function updatePositionState() {
navigator.mediaSession.setPositionState({
duration: audioEl.duration,
playbackRate: audioEl.playbackRate,
position: audioEl.currentTime,
});
}
我們可以在更新 MediaMetadata 時以及在操作的回撥函式中使用此函式,例如如下所示:
js
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();
});
規範
| 規範 |
|---|
| 媒體會話 # dom-mediasession-setpositionstate |
瀏覽器相容性
載入中…