• H5/微信 Video标签移动端播放问题


    一、禁止/阻止/取消默认的全屏播放

    亲测: IOS和安卓均有效

    <video 
         x5-playsinline="true"
         playsinline="true"
         webkit-playsinline="true"
         x-webkit-airplay="true"
         x5-video-orientation="portraint"
     >
        <source :src="videoUrl" type="video/mp4">
    video>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意: x5-video-player-type="h5" 这个参数不能用,用了的话安卓就失效了。

    二、视频自动播放

    H5页面:

    1. 需要在 video 标签中添加 mutedautoplay 属性
    <video 
     	 autoplay
    	 muted
         x5-playsinline="true"
         playsinline="true"
         webkit-playsinline="true"
         x-webkit-airplay="true"
         x5-video-orientation="portraint"
     >
        <source :src="videoUrl" type="video/mp4">
    video>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意: 自动播放,会因为 muted 而静音。

    微信:

    微信里面的自动播放只能用于IOS,不能用于安卓(目前来说)

    IOS微信自动播放方法: 通过使用 jssdkWeixinJSBridgeReady 播放

    下面是VUE代码

    HTML部分

    <video
      ref="videoRef"
      :src=""
      muted
      autoplay
      x5-playsinline="true"
      playsinline="true"
      webkit-playsinline="true"
      x-webkit-airplay="true"
      x5-video-orientation="portraint"
    >video>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    JS部分

    onMounted(() => {
    	if (WeixinJSBridge) {
    		doPlay();
    	} else {
    		document.addEventListener(
    			"WeixinJSBridgeReady",
    			function () {
    				doPlay();
    			},
    			false
    		);
    	}
    });
    
    // 通过微信桥接开始播放
    function doPlay() {
      WeixinJSBridge.invoke("getNetworkType", {}, function (e) {
        let videoHtml = videoRef.value;
        videoHtml.play();
      });
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    安卓微信自动播放方法:

    1. 通过触摸屏幕开始播放(来达到自动播放效果)
    2. 开启 video 标签的 controls,通过做个蒙版,点击诱导的方式
    3. 据说可以通过 Tcplayer 腾讯云点播(未测试)

    下面是VUE代码

    HTML部分

    <video
      ref="videoRef"
      :src=""
      muted
      autoplay
      x5-playsinline="true"
      playsinline="true"
      webkit-playsinline="true"
      x-webkit-airplay="true"
      x5-video-orientation="portraint"
      id="vdHtml"
    >video>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    <video
      ref="videoRef"
      :src=""
      muted
      autoplay
      x5-playsinline="true"
      playsinline="true"
      webkit-playsinline="true"
      x-webkit-airplay="true"
      x5-video-orientation="portraint"
    >video>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    JS部分

    onMounted(() => {
    	let ua = navigator.userAgent;
    	  let isAndroid = ua.indexOf("Android") > -1 || ua.indexOf("Linux") > -1;
    	  let isWeixin = ua.indexOf("MicroMessenger") > 0;
    	  // 安卓触摸屏幕后播放
    	  if (isAndroid && isWeixin) {
    	    document.addEventListener(
    	      "touchstart",
    	      function () {
    	        let video = document.getElementById("vdHtml");
    	        if (video) video.play();
    	      },
    	      false
    	    );
    	  }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    Java虚拟机垃圾收集器详细总结
    黑马JVM总结(三十七)
    复现一个循环问题以及两个循环问题
    Redis缓存穿透和缓存击穿和缓存雪崩
    Windows下Git Bash调用rsync
    小谈设计模式(21)—迭代器模式
    创建型模式-单例模式
    【C语言】分支结构
    GO 抽象工厂模式设计
    speedoffice使用方法-word插入的图片怎么剪裁
  • 原文地址:https://blog.csdn.net/qq_17627195/article/details/136740447