設置安卓視頻不全屏播放(不知道是不是全部安卓機型都支持)的方法
前兩天做了一個石頭剪刀布的視頻游戲項目,測試過程中找到了更加簡便的方法,分享下,如下設置HTML代碼:
<video id="videoID" controls src="demo.mp4" poster="demo.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中,對安卓和蘋果手機進行了判斷,因為大家應該都知道,蘋果手機在播放視頻時設置video的playsinline="true"屬性后,視頻就可以局部區域播放了,界面友好,而安卓則比較讓人頭痛,所以只需對安卓機進行以上(HTML/CSS/JS)設置即可