iOS 微信浏览器是 Chrome 内核,Android 微信浏览器是 X5 内核。
	
	  
		在微信 X5 浏览器中的问题
		
		  
		
	  
	  
	
  
  
在微信 X5 浏览器中的问题
		- controls 无法隐藏
 - 不能自动播放(autoplay 无效)
 - 播放时自动全屏
 
隐藏控件
因为不管 video 是否去掉了 controls 属性,视频都会显示控件,就只有用 css 隐藏掉控件。
一开始时,是设置 css:
video::-webkit-media-controls-enclosure {display: none !important;}
但是出现了2中情况:
- 情况A:有些手机的微信浏览器会隐藏所有控件,只显示一个居中的播放按钮
 - 情况B:有些手机上则隐藏了包括播放按钮在内的所有控件,导致无法播放
 
通过在 Chrome 上设置 setting -> Preferences -> Elements 勾选 “Show user agent shadow DOM”,查看
中的控件的具体实现,然后将上述 css 修改为:
		
video::-webkit-media-controls-current-time-display,video::-webkit-media-controls-time-remaining-display,video::-webkit-media-controls-timeline {display: none !important;}
隐藏具体的控件:当前时间、剩余时间、进度条。
则上述情况变为:
- 情况A的手机的微信浏览器会显示一个居中的播放按钮,同时下方也会有个小的播放按钮(类似视频网站视频暂停时的样式)
 - 情况B的手机的微信浏览器只会显示下方的小的播放按钮
 - 情况A和B都会显示声音调整和全屏控件(因为没有隐藏)
 
自动播放
微信不允许自动播放视频,必须通过用户交互才能播放。
iOS 中可以使用 js 播放视频(video.play()),但是 Android 中目前没有好的解决方法。
内嵌播放(不要自动全屏)
<videoclass="video-source"width="100%"height="240px" /*如果有封面,请设置高度*/controls /*这个属性规定浏览器为该视频提供播放控件*/style="object-fit:fill" /*加这个style是用于解决 Android / web 的视频在微信里的上下黑边问题*/webkit-playsinline="true" /*这个属性是用于小窗内播放,而不是全屏播放*/x-webkit-airplay="true" /*支持ios的AirPlay功能*/playsinline="true" /*支持小窗内播放*/x5-video-player-type="h5" /*启用H5播放器,是微信Android特性*/x5-video-orientation="h5" /*播放器的方向,landscape横屏,portraint竖屏,默认值为竖屏*/x5-video-player-fullscreen="true" /*全屏设置,设置为 true 是防止横屏*/preload="auto" /*这个属性规定页面加载完成后载入视频*/><source src=""></video>
video.js
video.js 自定义了播放控件,可以实现在不同手机上都统一显示同一个样式(例如播放按钮),可以播放直播视频(<source src="xxx.m3u8" type="application/x-mpegURL">)
videojs('videoId', {autoplay: true,controlBar: {progressControl: false,currentTimeDisplay: false,timeDivider: false,durationDisplay: false,remainingTimeDisplay: false,}}, function () {this.play().then(() => {// play success}).catch( err => {// auto play fail});});
