1、 监听video进入/退出全屏播放

IOS和Android有兼容问题

  1. IOS中(IOS 微信浏览器是Chrome的内核)
video.addEventListener('webkitbeginfullscreen', function() {    // 进入全屏
     video.play();
 })
 video.addEventListener('webkitendfullscreen', function() {   // 退出全屏
     video.pause();
 });
  1. Android中 (安卓微信浏览器是X5内核)
video.addEventListener('x5videoenterfullscreen', function() {    // 进入全屏
     video.play();
 })
 video.addEventListener('x5videoexitfullscreen', function() {   // 退出全屏
     video.pause();
 });
2、微信浏览器中video小窗播放

Video标签的属性:

<video
  class="videoBox" 
  src="video.m3u8" 
  poster="images.jpg"  // 视频封面
  preload   //
  webkit-playsinline="true" /* 这个属性是ios 10中设置可以让视频在小窗内播放,也就是不是全屏播放*/  
  playsinline="true"  // IOS微信浏览器支持小窗内播放
  x-webkit-airplay="allow" 
  x5-video-player-type="h5"  // 启用同层H5播放器,是wechat安卓版特性
  x5-video-player-fullscreen="true" // 全屏设置,设置为 true 是防止横屏
  x5-video-orientation="portraint" // 播放器的方向, landscape横屏,portraint竖屏,默认值为竖屏
  >
</video>

微信浏览器兼容问题:
ios微信浏览器是Chrome内核,相关属性都支持。而android微信浏览器是X5内核,对一些属性标签如playsinline 就不支持,所以默认始终全屏。
解决Android中video无法小窗播放的问题:启用同层H5播放器 腾讯浏览服务

  • playsinline和webkit-playsinline:IOS的微信浏览其中生效,使视频播放时局域播放,不脱离文档流。
  • x5-video-player-type:启用H5同层播放器,是微信安卓版特有的属性,即视频在全屏播放时,div可以呈现在视频的上层。同层播放也叫做沉浸式播放, 播放的时候看似全屏,但是已经去除了control和微信的导航栏,只留下’x’和’<'键。用CSS(.video{object-position: center top;})将视频定位在最上层,制造出小窗播放的假象。
  • x5-video-orientation: 声明播放器的方向,andscape横屏,portraint竖屏,默认值为竖屏。x5-video-orientation 这个属性需要x5-video-player-type开启H5模式。(同层播放下的div在css中要设置position: relative;)
  • x5­-video­-player­-fullscreen: 全屏设置,true支持全屏播放,false不支持全屏播放。
3、手动全屏播放

video.webkitEnterFullscreen(); //全屏播放

4、自动播放

Android始终不能自动播放。ios10后版本的safari和微信浏览器都不让视频和音频自动播放,但微信提供了一个WeixinJSBridgeReady事件可以实现视频自动播放。

document.addEventListener("WeixinJSBridgeReady", function (){ 
    video.play();
    video.pause();
}, false)
5、Android退出同层播放

退出X5播放器官网没有给出退出的方法,查阅资料找到一种可以实现的方法。给video标签设置video.style.display='none’样式,就退出X5了。监听退出通知再设置回来就好了。给video的父级标签设置display同样生效。