自动播放

苹果手机自动播放必须具备以下条件

  • 1、video 标签必须有 autoplay 的属性。
  • 2、video 必须设置 muted 属性,或者本身它就不包含音轨。
  • 3、video 元素仅在屏幕上可见时才开始播放。例如当它们滚动到视口中,通过CSS可见并插入DOM。
    • 滚动小窗口播放
    • 浏览器窗口切换,播放暂停
  • 4、允许元素内联播放,并且在开始播放时不会自动进入全屏模式,也就是playsinline webkit-playsinline.
<video autoplay muted playsinline="true" webkit-playsinline="true"></video>

微信中 video 属性设置

<video
 src="video.mp4"
 poster="loadbg.jpg" 视频封面
 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竖屏,默认值为竖屏
 webkit-playsinline="true" 这个属性是ios 10中设置可以让视频在小窗内播放,也就是不是全屏播放
 playsinline="true" IOS微信浏览器支持小窗内播放
 style="object-fit:fill">
</video>
  • webkit-playsinline="true"

    • 视频播放时局域播放,不脱离文档流 。但是这个属性比较特别, 需要嵌入网页的APP比如WeChat中UIwebview 的allowsInlineMediaPlayback = YES webview.allowsInlineMediaPlayback = YES,才能生效。换句话说,如果APP不设置,你页面中加了这标签也无效,这也就是为什么安卓手机WeChat 播放视频总是全屏,因为APP不支持playsinline,而ISO的WeChat却支持。
    • 这里就要补充下,如果是想做全屏直播或者全屏H5体验的用户,ISO需要设置删除 webkit-playsinline 标签,因为你设置 false 是不支持的 ,安卓则不需要,因为默认全屏。但这时候全屏是有播放控件的,无论你有没有设置control。 做直播的可能用得着播放控件,但是全屏H5是不需要的,那么去除全屏播放时候的控件,需要以下设置:同层播放。
  • x5-video-player-type="h5"

    • 启用同层H5播放器,就是在视频全屏的时候,div可以呈现在视频层上,也是WeChat安卓版特有的属性。同层播放别名也叫做沉浸式播放,播放的时候看似全屏,但是已经除去了control和微信的导航栏,只留下"X"和"<"两键。目前的同层播放器只在Android(包括微信)上生效,暂时不支持iOS。笔者想过为什么同层播放只对安卓开放,因为安卓不能像ISO一样局域播放,默认的全屏会使得一些界面操作被阻拦,如果是全屏H5还好,但是做直播的话,诸如弹幕那样的功能就无法实现了,所以这时候同层播放的概念就解决了这个问题。不过笔者在测试的过程中发现,不同版本的ISO和安卓效果略有不同。
    • 解决x5内核视频层级以及播放自动全屏的问题,x5内核视频层级在页面中最高,导致覆盖在上面的元素被遮挡 ###解决思路 x5内核提供两种解决方案
      • 为video标签添加属性:x5-video-player-type="h5",解决了视频层级过高的问题,但出现了点击播放自动进入全屏的问题。因此还需要监听x5的全屏事件进行适配,具体适配思路可以参见链接
      • 为video标签添加属性:x5-video-player-type="h5-page",解决了视频层级过高的问题,视频播放也不会立刻进入全屏状态
  • x5-video-orientation

    • 声明播放器支持的方向,可选值landscape 横屏,portraint竖屏。默认值portraint。无论是直播还是全屏H5一般都是竖屏播放,但是这个属性需要x5-video-player-type开启H5模式
  • x5-video-player-fullscreen="true"

    • 全屏设置。ture和false的设置会导致布局上的不一样
Lua习题练习
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。