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>