最新的设置安卓视频不全屏播放(不知道是否全部安卓机型都支持)的方法
前两天做了一个石头剪刀布的视频游戏项目,测试过程中找到了更加简便的方法,分享下,如下设置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"
*****************************************************************************************
使用canvas解决:
安卓微信中播放视频时总是会自动在新窗口全屏播放视频,而且播放结束后自动推送多个视频列表展示给用户选择,但有时候我们就是需要视频能够局部区域播放
找了一年多的答案终于有了结果了
下面贴出解决办法:
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)设置即可。