前置条件:
video标签承载视频。
遇到的问题:
- 在微信中点击播放按钮后,自动全屏播放。
- ios下video的封面并没有取到第一帧。pc端和android正常。
期望:
- 在微信中点击播放后,依然在当前页面,不要全屏。.
- 所有设备下,取第一帧作为poster。
解决方案:
对于第一个问题,很简单,设置webkit-playsinline
和playsinline
属性就能实现。
标签写法:
<video src="https://vjs.zencdn.net/v/oceans.mp4" playsinline="playsinline" webkit-playsinline="webkit-playsinline"></video>
或者使用js设置:
for(const video of document.querySelectorAll('video')) { //我这里有多个vedio标签
video.setAttribute('webkit-playsinline', 'webkit-playsinline');
video.setAttribute('playsinline', 'playsinline');
video.setAttribute('muted', 'muted');
video.setAttribute('autoplay', 'autoplay');
setTimeout(() => video.pause(), 800);
video.append('您的浏览器不支持video播放');
}
关于第二个问题的解决方案,上面的代码已经展示:
首先将视频设置为静音模式,这样就可以直接自动播放,否则chrome等一些高版本浏览器只写autoplay是无法实现自动播放的,自动播放后,延迟800ms, 暂停播放,这样就可以把视频卡在第一帧开始的时候,那封面也就设置成功了。