Chrome的自动播放策略
- 始终允许静音自动播放
- 在以下情况下,带声音的自动播放会被允许:
- 用户已经与当前域进行了交互(click、tap)
- 在桌面设备上,用户的媒体参与度指数闻值已超过,这意味着用户之前播放过有声视频。
- 用户己将网站添加到移动设备上的主屏幕或在桌面上安装了 PWA。
- 顶部帧可以将自动播放权限委派给其 iframe,以允许自动播放声音
媒体参与度(MEl,Media Engagement Index)
- 媒体参与度 (MEI) 衡量个人在网站上使用多媒体的倾向。
- 它是一个数字,可通过 chrome://media-engagement/ 查看。
- 数值越高,用户对该站点的媒体参与度越高,就越有机会自动播放
对于开发者而言:
- 媒体参与度的计算规则无法通过技术手段更改
- 媒体参与度的计算规则不同版本的浏览器可能会有变动
开发者的最佳实现
- 互动后播放
先尝试自动播放,若发生异常,则引导用户进行互动操作,然后再进行播放 try catch - 互动后出声
先静音播放,然后根据是否能自动播放决定是否取消静音,如果:- 能自动播放,取消静音
- 不能自动播放,引导用户进行互动操作后取消静音
function play() [
vdo.muted = true; // 静音
vdo.play() ;
const ctx = new AudioContext();
const canAutoplay = ctx.state === 'running';
ctx.close();
if (canAutoplay) {
// 关闭静音 操作播放
vdo.muted = false;
} else {
// 蒙层引导 或者其他方式引导操作
}