需求:
1. 打开页面,第一个视频自动播放。
2. 打开页面,第一个视频显示封面,切换视频显示封面。
3. 切换视频,实现秒开。
调研设备:iphone X
1. 打开页面,第一个视频自动播放。
方案:第一个视频设置autoplay,是否能自动播放得看应用权限,H5无法控制。
说明:具体说明查看自动播放指南。
参考:video自动播放问题+方案
2. 打开页面,第一个视频显示封面,切换视频显示封面。
说明:在IOS设备Safari浏览器中,不设置autoplay不显示封面,设置autoplay才显示封面(不自动播放的情况下也会)。
方案:第一个视频设置autoplay显示封面。
方案:切换视频可以 poster="阿里云视频url?spm=qipa250&x-oss-poster=video/snapshot,t_0,f_jpg,w_0,h_0,m_fast"。 但这不是一个好方法,因为不同的视频源第一帧取值方式不一样,实现第3点可以覆盖的该场景。
3. 切换视频,实现秒开。
说明:预期设置 preload="auto" 会自动加载视频,然后秒开;实际是即使预加载了视频文件,切换视频除非播放也会出现loading,(猜测是video解析视频需要时间,具体实际原因不知)。
方案:设置autoplay,muted="true" 能静音自动播放;监听播放是静音状态下暂停视频播放且移除静音,从而实现视频秒开。如此也覆盖了第2点的切换视频显示封面,可以不使用poster了。
<video controls playsinline autoplay muted='true' src="aaa.mp4" id="autoplaymuted"></video>
const videoAutoplayMuted = document.getElementById("autoplaymuted");
videoAutoplayMuted.addEventListener("play", (event) => {
const _target = event.target;
if (_target.getAttribute('muted') === 'true') {
console.log("autoplaymuted - 成功");
_target.pause();
console.log("autoplaymuted - 成功后暂停");
setTimeout(() => {
_target.muted = false
_target.setAttribute('muted', 'false')
}, 0)
}
});
滑动视频效果待续