移动端video标签自动播放(兼容ios,微信)

页面使用如下:

使用如上方法之后在其他端都可正常播放,只有iOS没办法自动播放,于是就Google开始寻找方法

<script> 
     //一般情况下,这样就可以自动播放了,但是一些奇葩iPhone机不可以 
     document.getElementById('car_audio').play(); 
    //必须在微信Weixin JSAPI的WeixinJSBridgeReady才能生效 
    document.addEventListener("WeixinJSBridgeReady", function () { 
        document.getElementById('car_audio').play(); 
        document.getElementById('video').play(); 
    }, false); 
</script>

最后找到方法如下:

<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered video"
       muted autoplay preload loop
       x5-video-player-fullscreen="true"
       x5-playsinline
       playsinline
       webkit-playsinline
>
    <source src="https://malltest.gacmotor.com/myfiles/video/2020-11-11/2020-11-111605101145912/2020-11-111605101145912.MOV" type="video/mp4" >
</video>

在video标签上添加如下即可:

x5-video-player-fullscreen="true"
x5-playsinline
playsinline
webkit-playsinline

以上测试有效!!!

<video>的基本属性:

  preload: (预加载)iPhone支持,Android不一定支持;

    poster: (封面图片)iPhone支持,Android不一定支持;

  autoplay: (自动播放)iPhone中的Safari不支持,webview可能被开启。Android不一定支持;

  loop: (循环播放)iPhone支持,Android不一定支持;

  controls: (控制条)iPhone支持,大师需要开始播放了才显示,Android基本支持;

  width: (宽度);

  height: (高度);

有时候在微信网页端插入<Video>标签的时候,不希望用户来拖动进度条的话,可以直接使用 playsinline属性,webkit-playsinline属性

如上属性配置,发现只有andorid和pc浏览器都可自动播放,iphone safari仍然不可播放,

要想iphone播放的关键,ps: 视频想要实现自动播放,貌似必须加上muted="true"属性

触发页面action调用video播放暂停:

   // 触发屏幕事件
  //--创建页面监听,页面加载完毕--触发音频播放
document.addEventListener('DOMContentLoaded', function () {
    function videoAutoPlay() {
        var video= document.getElementById('video');
        video.play();
    }
    audioAutoPlay();
});
//--创建触摸监听,当浏览器打开页面时,触摸屏幕触发事件,进行音频播放
document.addEventListener('touchstart', function () {
    function videoAutoPlay() {
        var video= document.getElementById('video');
            video.play();
    }
    videoAutoPlay();
});

从Chrome从66版本开始,为了避免打扰用户,自动播放时,必须是muted静音播放。
能不能绕过这个限制呢?不妨试试效果:

document.getElementById('homeVideo').play();
//在play之后加一个延时,清除video的muted属性
setTimeout(function(){
    document.getElementById('homeVideo').removeAttribute('muted');
}, 100);

微信浏览器:

//引入微信的js,以及写入以下js
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>
    document.addEventListener("WeixinJSBridgeReady", function () {
        document.getElementById("videoID").play();
    }, false);
</script>

亲测可用,但在safari上还是不行,苹果在safari on ios里面明确指出等待用户的交互动作后才能播放media,也就是说如果你没有得到用户的action就播放的话就会被safri拦截

浏览器的安全设定这没办法,但至少在微信上可以了,正常也都是微信分享

如何全屏:

object-fit: cover;( 被替换的内容大小保持其宽高比,同时填充元素的整个内容框。 如果对象的宽高比与盒子的宽高比不匹配,该对象将被剪裁以适应。)

<template>
  <div>
    <nav-bar :title="title"></nav-bar>
    <div class="bg">
      <video
        class="video"
        id="video"
        x5-video-player-type="h5"
        x5-playsinline
        playsinline="true"
        webkit-playsinline="true"
        controls
        autoplay
        preload
        :src="src"
      >
        <source :src="src" />
      </video>
    </div>
  </div>
</template>

<script>
// #ifndef MP-WEIXIN
import wxConfig from "~/utils/wxSdk.js";
// #endif
export default {
  data() {
    return {
      title: "",
      src: "",
    };
  },
  mounted() {
    this.src = decodeURIComponent(this.$route.query.src);
    this.src="https://mall.gacmotor.com/myfiles/video/2020-11-22/2020-11-221606059352858/2020-11-221606059352858.mp4";
    this.title = decodeURIComponent(this.$route.query.title || "");
    let autoplay = this.$route.query.autoplay;
    let video = document.querySelector("#video");
    // var u = navigator.userAgent;
    // var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    if (wxConfig.videoGetNetworkType) {
      this.$nextTick(() => {
        wxConfig.videoGetNetworkType("video");
      });
    }
  },
};
</script>

<style lang="scss" scoped>
.bg {
  background-color: black;
  width: 100vw;
  height: calc(100vh - 44px);
  padding-top: 44px;
}

.video {
  position: absolute;
  top: 50%;
  left: 50%;
  min-width: 100%;
  min-height: 100%;
  object-fit: cover;/**关键代码**/
  width: 100%;
  height: 100%;
  -ms-transform: translateX(-50%) translateY(-50%);
  -webkit-transform: translateX(-50%) translateY(-50%);
  transform: translateX(-50%) translateY(-50%);
}

</style>

 

### HTML `video` 标签使用方法 #### 创建基本视频播放器 通过创建 `<video>` 标签并设置其属性来构建一个简单的视频播放界面。此标签支持多种属性用于控制视频的行为,如宽度、高度、自动播放等。 ```html <video id="showvideo" autoplay width="100%" height="300px" preload="auto" muted> <source src="your_video_address.webm" type="video/webm"> </video> ``` 上述代码片段展示了如何定义一个具有特定尺寸和行为的视频元素[^1]。 #### 获取视频对象进行编程操作 利用 JavaScript 可以轻松访问页面中的视频组件,并对其执行各种命令: ```javascript var videoDom_start = document.getElementById("showvideo"); // 控制视频暂停或继续播放 if (videoDom_start.paused) { videoDom_start.play(); } else { videoDom_start.pause(); } ``` 这段脚本说明了怎样通过 DOM API 来管理视频的状态变化[^5]。 #### 提供多格式源文件增强兼容性 考虑到不同浏览器对于媒体编解码的不同支持情况,在实际应用中通常建议为同一个视频资源指定多个可能被使用的版本: ```html <video controls> <source src="my_video.mp4" type="video/mp4"> <source src="my_video.webm" type="video/webm"> <source src="my_video.ogv" type="video/ogg"> Your browser does not support the video tag. </video> ``` 这样做的好处是可以确保尽可能广泛地覆盖用户的设备环境,提高用户体验质量[^3]。 #### 自定义控制器外观设计 除了默认提供的控件外,还可以完全按照需求定制化整个播放区域的设计风格以及交互逻辑,这涉及到 CSS 和更复杂的 JS 编程技巧。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值