微信浏览器--IOS安卓video中的坑点

本文介绍了解决微信浏览器中video标签自动全屏及播放完毕后出现广告的问题,并提供了一个Vue示例代码,展示了如何通过样式控制实现全屏播放。

刚好项目中有使用video,便自己预先写了个demo

发现在微信浏览器中用video会有不小的坑,网上大部分说的集中的主要是

1、安卓/IOS播放自动全屏

2、安卓播放完毕后的广告 毕竟腾讯的

<video
  id="video"
  width='100%'
  height="100%"
  controls
  src="我是资源路径"
  poster="我是封面图"
  x5-playsinline="true"
  x5-video-player-type="h5"
  x5-video-player-fullscreen="true"
  playsinline="true"
  webkit-playsinline="true"
  preload="auto"></video>

基本以上写法可以兼容双平台会出现的问题。

但是广告还是一样会有,心机呀。 那么一些大平台B站 直播平台 是如何做到自定义视频的呢

其实他们都用了video。大家可以参考bilibli的视频 然后用F12用手机预览模式。

video本身的控件去除了,自定义的播放控件栏

全屏如何操作呢?

其实全屏是通过样式进行操作。

<!--@Daniel-->
<!--已处理坑点:-->
    <!--1、在安卓微信浏览器 自带全屏播放完后 是会出现腾讯的插入广告-->
       <!--解决方法 通过样式控制全屏 ps 大型的直播平台都是通过此方法解决。-->
    <!--2、IOS播放自动全屏-->
       <!--解决方法 playsinline="true"   webkit-playsinline="true"-->
<template>
  <div class="hello">

    <div class="player-container">
                  <div class="player-box" :class="ScreenFull?'wide':''">
                      <video
                        id="video"
                        width='100%'
                        height="100%"
                        controls
                        src="资源路径"
                        poster="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1526379463086&di=ba2de8ec594d4659b0b38099733eb200&imgtype=0&src=http%3A%2F%2Fupload.art.ifeng.com%2F2017%2F0613%2F1497334179561.jpg"
                        x5-playsinline="true"
                        x5-video-player-type="h5"
                        x5-video-player-fullscreen="true"
                        playsinline="true"
                        webkit-playsinline="true"
                        preload="auto"></video>
                  </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data(){
    return{
      ScreenFull:false //全屏控制
    }
  },

}
</script>


<style scoped>
  .player-container{
    position: relative;
    z-index: 100;
    width: 100%;
    height: 10rem;
  }
  .player-box{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    overflow: hidden;
  }
  .player-box.wide{
    position: fixed;
    width: auto;
    height: auto;
  }
  video{
    background-color: #000;
  }
</style>

这个是我在Vue中写的demo。 

原生H5的话 可以只需要动态插入删除wide样式就可以了,就能实现微信浏览器中的'伪全屏'。


还有一些活动的H5需要进行视频中的页面铺满

对vedio加入该样式即可。

 object-fit:cover;


object-fit属性由下列的值中选择一个关键字来指定。

值 
fill 
被替换的内容的大小,以填补该元素的内容框:对象的具体对象的大小是元素的使用宽度和高度。 
contain 
被替换的内容的大小,为自身宽高比不变,适应该元素的内容框的大小:它的具体对象的大小被解析为对元素的使用宽度和高度的含有约束。 
cover 
被替换的内容的尺寸却使元件的整个内容框,以保持其长宽比其具体的对象的大小被解析为针对元素的使用的宽度和高度的盖约束。 
none 
被替换的内容的尺寸却使元件的整个内容框,以保持其长宽比其具体的对象的大小被解析为针对元素的使用的宽度和高度的盖约束。 
scale-down 
内容的尺寸仿佛none或contain指定了,取将导致更小的具体对象的大小。 
形式语法 


### 微信浏览器中视频无法自动播放的解决方案 微信浏览器中视频无法自动播放是一个常见的问题,尤其是在移动端。微信浏览器对自动播放视频进行了限制,主要是为了节省流量和提升用户体验。然而,通过一些特定的技术手段,可以在一定程度上绕过这些限制,尤其是在iOS和Android设备上。 #### 1. 使用 `WeixinJSBridgeReady` 事件 微信浏览器提供了一个特殊的 JavaScript 接口 `WeixinJSBridge`,可以通过监听 `WeixinJSBridgeReady` 事件来触发视频播放。这种方法在 iOS 和 Android 上都适用。 ```html <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> document.addEventListener("WeixinJSBridgeReady", function () { var video = document.getElementById('myVideo'); video.play(); }, false); </script> ``` #### 2. 用户交互触发播放 微信浏览器要求用户必须通过某种交互行为(如击、触摸等)来触发视频播放。因此,可以在页面上添加一个按钮或其他可击的元素,当用户击时调用 `video.play()` 方法。 ```html <video id="myVideo" muted autoplay="autoplay" loop style="width: 100%;"> <source src="video.mp4" type="video/mp4"> </video> <button onclick="playVideo()">播放视频</button> <script> function playVideo() { var video = document.getElementById('myVideo'); video.play(); } </script> ``` #### 3. 设置视频属性以支持内联播放 为了确保视频在移动端能够以内联模式播放而不是全屏播放,可以设置一些特定的属性。这些属性包括 `playsinline`、`webkit-playsinline` 和 `x5-video-player-type` 等。 ```html <video id="myVideo" muted autoplay="autoplay" loop style="width: 100%;" playsinline webkit-playsinline x5-video-player-type="h5"> <source src="video.mp4" type="video/mp4"> </video> ``` #### 4. 监听窗口大小变化事件 在某些情况下,视频可能需要根据窗口大小的变化进行调整。可以通过监听 `resize` 事件来动态调整视频的播放状态。 ```html <script> $(window).on('resize', function() { var video = document.getElementById('myVideo'); var isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); if (isMobile && $(window).width() < 1025) { document.getElementById('myVideo').play(); document.addEventListener("WeixinJSBridgeReady", function () { document.getElementById('myVideo').play(); }, false); } }); </script> ``` #### 5. 兼容性处理 不同品牌的手机和不同的微信版本可能会有不同的行为,因此需要进行一些兼容性处理。例如,某些 iOS 设备可能需要额外的配置才能正常播放视频。 ```html <video id="myVideo" muted autoplay="autoplay" loop style="width: 100%;" playsinline webkit-playsinline x5-video-player-type="h5" x5-video-orientation="portraint" x5-video-player-fullscreen="true"> <source src="video.mp4" type="video/mp4"> </video> ``` ### 总结 通过上述方法,可以有效地解决微信浏览器中视频无法自动播放的问题。主要思路是利用微信提供的 `WeixinJSBridgeReady` 事件,结合用户交互和视频属性设置,确保视频能够在不同设备和浏览器环境下顺利播放。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值