MediaSession - 允许网页为标准媒体回放交互提供自定义行为

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

MediaSessionMedia Session API 的接口,允许网页为标准媒体回放交互提供自定义行为。

属性

MediaSession.metadata

返回包含富媒体元数据的 MediaMetadata 实例,以便在平台 UI 中显示。

MediaSession.playbackState

指示当前媒体会话是否正在播放。有效值为 "none", "paused""playing"

方法

MediaSession.setActionHandler()

为媒体会话操作设置事件处理程序,例如播放或暂停。有关完整列表,请参阅方法页面。

实例

以下实例创建一个新的媒体会话并为其分配操作处理程序:

if ('mediaSession' in navigator){
  navigator.mediaSession.metadata = new MediaMetadata({
    title: "播客剧集标题",
    artist: "播客主持人",
    album: "播客名称",
    artwork: [{src: "podcast.jpg"}]
  });
  navigator.mediaSession.setActionHandler('play', function() {});
  navigator.mediaSession.setActionHandler('pause', function() {});
  navigator.mediaSession.setActionHandler('seekbackward', function() {});
  navigator.mediaSession.setActionHandler('seekforward', function() {});
  navigator.mediaSession.setActionHandler('previoustrack', function() {});
  navigator.mediaSession.setActionHandler('nexttrack', function() {});
}

以下示例设置暂停和播放的事件处理程序:

var audio = document.querySelector("#player");
audio.src = "song.mp3";

navigator.mediaSession.setActionHandler('play', play);
navigator.mediaSession.setActionHandler('pause', pause);

function play() {
   audio.play();
   navigator.mediaSession.playbackState = "playing";
}

function pause() {
   audio.pause();
   navigator.mediaSession.playbackState = "paused";
}

规范

规范 状态 备注
Media Session Standard
MediaSession 的定义
草稿 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持73≤7971 未知 不支持 未知
metadata73≤7971 未知 不支持 未知
playbackState73≤79 不支持 未知 不支持 未知
setActionHandler()73≤7971 未知 不支持 未知
setPositionState()73≤79 不支持 未知 不支持 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持57 未知 不支持 未知 不支持 未知
metadata 不支持57 未知 不支持 未知 不支持 未知
playbackState 不支持57 未知 不支持 未知 不支持 未知
setActionHandler() 不支持57 未知 不支持 未知 不支持 未知
setPositionState() 不支持57 未知 不支持 未知 不支持 未知