视频属性
poster="loadbg.jpg"
视频封面(安卓兼容不好,魅族 oppo 无法显示,出现黑屏。解决方法:视频兼容 01)preload="auto"
属性规定在页面加载后载入视频x-webkit-airplay="allow"
此视频支持ios的AirPlay功能x5-video-player-type="h5"
启用 H5 播放器,是 wechat 安卓版特性x5-video-player-fullscreen="true"
全屏设置,设置为 true 是防止横屏x5-video-orientation="portraint"
播放器支付的方向,landscape 横屏,portraint 竖屏,默认值为竖屏(ios 不起作用)webkit-playsinline="true"
这个属性是 ios 10 中设置可以让视频在小窗内播放,也就是不是全屏播放(在安卓上无效)playsinline="true"
IOS 微信浏览器支持小窗内播放
视频兼容
- 控制视频的展示隐藏用 v-if;防止下拉刷新历史的时候视频重复初始化。
- ios10 以及以下和安卓一样无法自动播放视频,需要手动触发 play()事件,播放视频
- 安卓自带分享和小窗播放,和控制条:需 video 外加 div,div 全屏遮盖安卓的自带的控件。video 在全屏铺满 div; object-fit: contain;样式表示全屏按视频原比例铺满。因为 poster 在 android 兼容的并不好,不如在视频上层加个 div 铺张图片,这个比较好的处理方式应该是:视频上加一层 div 做封面,由于 android 不允许视频上层有东西,所以首先将视频设为的 width:1px,当播放后,上层的封面 remove 掉,同时 width:100%
-4. 防止视频加载慢初始化会黑屏:打开视频时,先展示视频第一帧的图片,当视频加载完后,隐藏图片展示 video,此时用 v-show 控制,v-if 会找不到视频对象。 - android 微信内置浏览器采用腾讯 X5 内核,不遵循 X5web 标准。安卓浏览器、安卓 qq、安卓微信对 video 的支持不同。andriod 6.0 以上开始。小米手机等,就开始默认 video 标签。不会默认全屏播放。
- 安卓微信
x5-video-player-type="h5" playsinline="true" x-webkit-airplay="true" webkit-playsinline="true" preload="auto"
视频事件以及兼容
事件 | IOS | Android |
---|---|---|
play | 响应的是video.play()方法,并不代表已经开始播放 | 和iOS一样,仅是响应video.play()方法 |
canplay | 视频元素渲染成功 | 和iOS一样 |
canplaythrough | 有明确的缓冲,表示可以流畅播放了 | 视频会卡住,数据可能还没有开始加载; |
playing | 明确表示播放开始了 | 视频可能并没有开始播放 |
timeupdate | 会有明确的进度变化,可以获取到currentTime | 进度不一定变化,currentTime可能总是0,但是第一次有currentTime变化的timeupdate事件一定代表了视频开始播放了; |
error | iOS中会有明确的错误抛出; | Android中某些浏览器会莫名其妙的抛出error |
stalled | 响应的是网络状况不佳,导致视频下载中断 | 在没有play之前,也可能会抛出该事件。 |