Hi, 👋 ! 如果您发现有什么错误的地方,点这里可以提 issue,🤝🤝
by poplark
浏览器在播放音频或包含声音的视频文件时,若用户没有主动点击播放按钮或与页面有交互的行为,而仅仅是通过在 audio 或 video 标签上添加 autoplay 属性,或通过 js 直接调用 play 方法时 ,往往被报错类似于 NotAllowedError: play() failed because the user didn't interact with the document first.
这样的错误,这就触发了浏览器的自动播放限制。
Chrome 浏览器上,NotAllowedError: play() failed because the user didn't interact with the document first.
Safari 浏览器上,NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
Firefox 浏览器上,NotAllowedError: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
Chrome - 2018年4月, Chrome 66
Safari - 2018年9月, Safari 11.0
Firefox - 2017年11月, Firefox 59
通用的方法,是静音播放,适用于有音频的视频,给 video 标签添加 muted 属性,并在页面中给用户提示在静音播放,由用户点击后触发音频的播放。(但这里在 Firefox 中可能存在问题,譬如 Firefox 可对所有站点都设置为不允许音频和视频的自动播放)
Chrome
Safari
Firefox
注:Safari 有些坑, 如果页面中包含多个音频源,假设有 A,B 两个音频源都需要播放。
关于 Chrome 的 MEI,全称 Media Engagement Index,站点名单及得分排行,可以通过浏览器里访问 chrome://media-engagement/
进行查看。
关于 play 后立即调用 pause 或换源导致 interrupted
或 aborted
的问题,不同浏览器报错信息也不同