前端之视频自动播放
当我们打开一些视频网站的时候,我们发现视频可以自动播放,但是到了我们自己的网站后即使加上autoplay或者用js方法控制,也是不能自动播放的
<body>
<video src="1.mp4" autoplay></video>
</body>
<script>
const vd = document.querySelector('video')
vd.play()
</script>
打开控制台,会发现报错了
说是用户还没有与页面交互,所以这个方法失败了
这是因为chrome浏览器的自动播放策略,其它播放器也大差不差
主要目的是为了改善用户体验
要不然你在人多的地方打开一个网站,网站突然发出奇怪的声音,岂不是当场社死
那么解决办法有哪些
自动播放策略里也说明了
- 允许无声自动播放
- iframe
- 满足下面三种条件的任意一种
- 用户在当前域进行了交互
- 用户已经将网站添加到移动端主屏幕或桌面上安装了pwa
- 在桌面设备上,用户的媒体参与度超过阈值
这个媒体参与度是什么呢
这个值越高,浏览器就会认为你对这个网站的内容更感兴趣,当达到一定值后,就会允许自动播放视频
chrome浏览器可以打开chrome://media-engagement/来查看
左边是访问的域名,右边是参与度的值,数值越高,越有可能自动播放
可是我们的网站没有那么高的值,那么我们怎么实现自动播放呢
1.iframe是父窗口有自动播放的能力了可以传递给子窗口,这个肯定不合适
2.用户刚打开网站,怎么可能已经交互过呢
3.移动端添加到主屏幕或者桌面安装pwa,这个国内基本没有
那么只剩下两种方式
- 静音播放,让用户手动打开音量
- 检测到不能自动播放,让用户点击播放
我们看看视频网站都是怎么做的
我哔哩哔哩值太高,所以换了个电脑来截图展示
哔哩哔哩是静音播放
快手是静音播放
抖音是让用户点击播放
好,方法说到这里,哪种方式自己选择
好吧好吧,很好