X5内核浏览器video自动全屏解决办法-canvas

Posted winteronlyme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X5内核浏览器video自动全屏解决办法-canvas相关的知识,希望对你有一定的参考价值。

最近在做手机端上面播放视频的项目,但是在安卓上面,video的播放是脱离页面,置于最顶层的,所以带来了很多问题,为了解决这个问题,查看了多方资料,写了下面简单的demo,方便以后使用。

下面就是运用canvas重绘video视频。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=640,user-scalable=no"/>
    <title>X5内核浏览器video自动全屏解决办法-canvas</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html,body{
            width: 100%;
            height: 100%;
            overflow:hidden!important;
        }
        
        .content{
            position: absolute;
            width: 100%;
            height: 1136px;
            top: 50%;
            transform: translate3d(0, -50%, 0);
        }

        #play{
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate3d(-50%, -50%, 0);
            width: 100px;
            height: 100px;
            line-height: 100px;
            font-size: 28px;
            border: 1px solid #000;
            color: #000;
            text-align: center;
            border-radius: 50%;
        }
        #video{
            position:absolute;
            left:50%;
            transform: translate3d(-50%,0,0);
            width: 100%;
            height: 100%;
            object-fit: cover;
            object-position: center center;
            display:none;
        }
        #myCanvas{
            display: block;
        }
        
    </style>
</head>
<body>
    <div class="content">
        <div id="play">播放</div>
        <video id="video" x5-playsinline="true" playsinline="true" webkit-playsinline="true" x5-video-player-type="h5" x5-video-player-fullscreen="true" src="movie.mp4" preload></video>
        <canvas id="myCanvas">
            Your browser does not support the HTML5 canvas tag.
        </canvas>
    </div>
    <script type="text/javascript">

        var v = document.getElementById(video);
        var c = document.getElementById(myCanvas);
        var ctx = c.getContext(2d);
        document.getElementById("myCanvas").width = 640;  
        document.getElementById("myCanvas").height = 1136; 
        var cwidth = document.getElementById(myCanvas).offsetWidth;
        var cheight = document.getElementById(myCanvas).offsetHeight;
        // 初始化定时器
        var i=null;
        document.getElementById("play").addEventListener("click",function(){
            document.getElementById(video).play()
        });
        // 播放
        v.addEventListener("play", function() {
            document.getElementById("play").style.cssText = " display:none ";
            var i = window.setInterval(function() {
                ctx.drawImage(v, 0, 0, cwidth, cheight);
            }, 20);  // 每0.02秒画一张图片
        }, false);

        // 暂停
        v.addEventListener("pause", function() {
            window.clearInterval(i);  // 暂停绘画
        }, false);

        // 结束
        v.addEventListener("ended", function() {
            clearInterval(i);
        }, false);
    </script>
</body>
</html>

 

以上是关于X5内核浏览器video自动全屏解决办法-canvas的主要内容,如果未能解决你的问题,请参考以下文章

腾讯X5内核集成-解决遇到的问题(ABI平台匹配加载理解)

vue-video-player插件在微信浏览器X5内核中的坑

vue-video-player插件在微信浏览器X5内核中的坑

微信浏览器及X5内核同层视频播放问题

解决手机微信浏览器视频自动播放和默认全屏问题

微信内置浏览器video标签自动全屏的问题