H5页面实现仿视频号滑动视频效果

需求:

    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)
    }
});

滑动视频效果待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容