移动端视频h5表现问题汇总

站长手记 作者: 2024-08-28 01:45:01
同屏播放视频、移动端视频预加载:由于移动端不能预加载视频,所以hack一种方案:监听WXJSBridge WeixinJSBridgeReady、微信安卓环境下需要在touchmove事件中阻止掉默认事件,否则不能触发视频播放 、 由于微信安卓版本基于x5内核,视频会出现全屏按钮,而且去不掉,会误导用户点击

1. 同屏播放视频

<video src="" x-webkit-airplay="true" webkit-playsinline="true" playsinline />

2. 移动端视频预加载

// 预加载视频hack
function preload() {
    document.getElementById('video').play();
    setTimeout(function () {
        document.getElementById('video').pause();
    }, 200);                 
}
document.addEventListener("WeixinJSBridgeReady", preload, false);

3. 滑动播放视频

// 滑动或点击播放视频
ele.addEventListener('touchmove', function (event) {
    event.preventDefault();
});
ele.addEventListener('touchend', function () {
    video.play();
})

4. 微信安卓下视频异常表现(由于安卓机型众多,这里测试过部分机型基本都会出现)

// 绘制视频到canvas
function video2canvas(){
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');//获取绘图环境
    var video = document.getElementsByTagName('video')[0];
    video.play();
    video.addEventListener('play', function(){
        setInterval(function(){
            ctx.drawImage(video, 0, 0, 200, 200);
        }, 20);
    });
}
部分机型开始播放出现黑屏(当 currentTime 更新时会触发 timeupdate 事件)。
video.addEventListener('timeupdate', () => {
    // 当视频的currentTime大于0.1时表示黑屏时间已过
    if (video.currentTime > 0.1) {
        // 去掉视频上的浮层
    }
})
video.addEventListener('timeupdate', () => {
    // 兼容x5,时间为视频时长
    if (video.currentTime > 10) {
        // 移除视频
    }
}, false)
video.addEventListener('ended', () => {})

5.  视频压缩

6. 视频参数

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_69864.html
移动端 视频h5