安卓微信中播放视频终于可以不再自动全屏啦

转自:https://blog.csdn.net/qq_16494241/article/details/72780908

 

最新的设置安卓视频不全屏播放(不知道是否全部安卓机型都支持)的方法
前两天做了一个石头剪刀布的视频游戏项目,测试过程中找到了更加简便的方法,分享下,如下设置HTML代码:
<video id="videoID" controls src="XXX" poster="XXX.jpg" preload="auto" x-webkit-airplay="true" x5-playsinline="true" webkit-playsinline="true" playsinline="true"></video>

安卓设置属性:
 x5-playsinline="true"
实测,不可加以下属性设置,否则还是会跳出黑底全屏播放
 x5-video-player-type=‘h5‘ x5-video-player-fullscreen=‘true‘

注意的细节就是,(只是安卓机)当视频播放后:
  1、它的层级比较高,当有设置定位的弹层显示后,即使设置z-index层级特别高,还是会被播放过的视频挡住的(我这边解决方法就是当显示弹层时隐藏视频,关闭弹层再显示视频),也就是说此视频不可设置被其它元素遮挡,它永远是在最上层的
  2、如果有背景音乐播放时,当视频播放后,背景音乐自动停止且不会在视频播放完后再继续播放

 IOS设置属性:
 webkit-playsinline="true" playsinline="true" 

*****************************************************************************************

安卓微信中播放视频时总是会自动在新窗口全屏播放视频,而且播放结束后自动推送多个视频列表展示给用户选择,但有时候我们就是需要视频能够局部区域播放

找了一年多的答案终于有了结果了

下面贴出解决办法:

1、HTML中
① 给video标签增加属性,使浏览器调用h5原生video
 <video id="testVideo" x5-video-player-type=‘h5‘ x5-video-player-fullscreen=‘true‘>
②在页面中添加canvas画布
<canvas id="testCanvas"></canvas>

2、CSS中,使video隐藏
video{display:none}

3、js代码配置
/*以下是渲染CANVAS画布中的视频*/
//获取video
var TestVideo=document.getElementById("testVideo");
//获取canvas画布
var TestCanvas=document.getElementById("testCanvas");
//设置画布
var TestCanvas2D=TestCanvas.getContext(‘2d‘);
//设置setinterval定时器
var TestVideoTimer=null;
//监听播放
TestVideo.addEventListener(‘play‘,function() {
    TestVideoTimer=setInterval(function() {
        TestCanvas2D.drawImage(TestVideo,0,0,videoW,videoH);
    },20);
},false);
//监听暂停
TestVideo.addEventListener(‘pause‘,function() {
    clearInterval(TestVideoTimer);
},false);
//监听结束
TestVideo.addEventListener(‘ended‘,function() {
    clearInterval(TestVideoTimer);

},false);

 

测试demo的下载地址

  测试的demo中,对安卓和苹果手机进行了判断,因为大家应该都知道,苹果手机在播放视频时设置video的playsinline="true"属性后,视频就可以局部区域播放了,界面友好,而安卓则比较让人头痛,所以只需对安卓机进行以上(HTML/CSS/JS)设置即可

下面贴图是demo的测试截屏:

安卓微信中播放视频终于可以不再自动全屏啦

安卓微信中播放视频终于可以不再自动全屏啦

上一篇:MonoRail学习笔记五:定制服务实现自定义功能


下一篇:超简单--仿微信朋友圈展开显示更多文字功能