vue 仿抖音视频播放切换

作者&投稿:军卫 (若有异议请与网页底部的电邮联系)
~ 一、第一部分html页面的准备

     <van-swipe :show-indicators="false" :initial-swipe="showSlide"  @change="onChange"  vertical :loop="false" ref="vant_swipe" >

          <van-swipe-item v-for="(item, index) in videoList" :key="index" class="product_swiper">

            <div class="video_container">

              <video class="video_box" width="100%" height="100%" webkit-playsinline="true" x5-playsinline x5-video-player-type="h5"  x5-video-player-fullscreen="true" playsinline="true" preload="auto" :src="item.video_url" :playOrPause="playOrPause"  x-webkit-airplay="allow"  x5-video-orientation="portrait" @click="pauseVideo" @ended="onPlayerEnded($event)" loop="loop" :style="{opacity:isopacity}"></video>

              <!-- 封面 -->

              <img v-show="isVideoShow" class="play" @click="playvideo" :src="item.video_cover" :style="{opacity:isopacity}">

              <img  v-show="iconPlayShow" class="icon_play" @click="playvideo"  src="static/images/icon_play.png">

            </div>

            <!-- 底部作品描述 -->

            <div class="production_box">

              <div class="production_name">{{item.title}}</div>

              <div class="production_des">{{item.introduction}}</div>

            </div>

          </van-swipe-item>

        </van-swipe>

二、数据说明部分

data() {

    let u = navigator.userAgent;

    return {

      showSlide: 0,

      allLoaded: false, //数据是否全部加载完

      page: 1,

      isLoading: true,

      option: {},

      current: 0,

      videoList: [],

      isVideoShow: true,

      playOrPause: true,

      video: null,

      iconPlayShow: true,

      isAndroid: u.indexOf("Android") > -1 || u.indexOf("Adr") > -1, // android终端

      isiOS: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端

      tabIndex: 0,

      showshare: false,

      videoInterval: null, //检查视频是否加载好

      videoLazy: false, //视频懒加载

      isopacity: 1,

      shareVideo: null, //点击分享的时候需要暂停的视频

      dataLoaded: false

    };

  },

三、事件

//滑动改变播放的视频

    onChange(index) {

      //如果已经播放第一个了就清除循环

      if (this.videoInterval) { clearInterval(this.videoInterval); }

      this.iconPlayShow = false;

      //改变的时候 暂停当前播放的视频

      let video = document.querySelectorAll("video")[this.current];

      video.pause();

      //判断案例加载到哪里了

      if (index + 1 == this.videoList.length) {

        this.page++; //当视频切换到列表的最后一个的时候请求加载下一页

        this.getData(index);

      } else {

        this.changeload(index);

      }

    },

//播放视频

    changeload(index) {

      this.playOrPause = false;

      this.current = index;

      if (this.isiOS) {

        //页面中是否存在视频懒加载

        if (this.videoLazy) {

          this.videoLazy = false;

          this.isopacity = 1;

        } else {

          this.videoLazy = true;

          this.isopacity = 0;

        }

        //ios切换直接自动播放下一个

        let vid = document.querySelectorAll("video")[this.current];

        console.log("进入changeload", vid.readyState, vid.networkState);

        //检测视频是否加载好了

        if (vid.readyState == 4) {

          this.isopacity = 1;

          this.videoLazy = false;

          vid.play();

          console.log(this.videoLazy, "懒加载");

        } else {

          this.videoInterval = setInterval(() => {

            this.myFunction(vid);

          }, 300);

        }

        this.playOrPause = true;

      } else {

        if (this.videoLazy) {

          this.videoLazy = false;

          this.isopacity = 1;

        }

        //安卓播放时重置显示封面。图标等

        this.isVideoShow = true;

        this.iconPlayShow = true;

      }

    },

//检查视频懒加载的图片是否加载好

    imageLoaded() {

      this.iconPlayShow = true;

    },

//视频播放

    playvideo() {

      let video = document.querySelectorAll("video")[this.current];

      this.isVideoShow = false;

      this.iconPlayShow = false;

      //检测视频是否加载好了

      if (video.readyState == 4 || video.networkState == 1) {

        video.play();

        this.isopacity = 1;

      } else {

        this.videoInterval = setInterval(() => {

          this.myFunction(video);

        }, 300);

      }

      window.onresize = function() {

        video.style.width = window.innerWidth + "px";

        video.style.height = window.innerHeight + "px";

      };

    },

pauseVideo() {

      clearInterval(this.videoInterval);

      //暂停\播放

      let video = document.querySelectorAll("video")[this.current];

      if (this.playOrPause) {

        video.pause();

        this.iconPlayShow = true;

        this.videoLazy = false;

      } else {

        this.videoInterval = setInterval(() => {

          this.myFunction(video);

        }, 300);

        this.iconPlayShow = false;

      }

      this.playOrPause = !this.playOrPause;

    },

onPlayerEnded(player) {

      //视频结束

      this.isVideoShow = true;

      this.current += this.current;

    },

    myFunction(video) {

      let nws = video.networkState;

      if (video.readyState == 4 || nws == 1) {

        video.play();

        if (video.readyState == 4) {

          this.iconPlayShow = false; //暂停按钮

          this.videoLazy = false; //懒加载

          this.isopacity = 1; //视频是否显示

          this.isVideoShow = false; //封面图片

          clearInterval(this.videoInterval);

        }

      } else {

        this.videoLazy = true;

        this.isopacity = 0;

      }

    }

deactivated() {

    this.showSlide = this.current;

    console.log("清除循环", "退出");

    clearInterval(this.videoInterval);

  }


城关区19130474133: 抖音视频可以后台播放吗? -
寇尤左金: 抖音可以后台播放,具体操作如下: 打开抖音,点击右下角“我的”,进入我的主页. 点击“设置”,进入设置页面. 点击“高级设置”,进入高级设置页面. 点击“开启”即可开启后台播放. 拓展知识: 抖音,是由字节跳动孵化的一款音...

城关区19130474133: 抖音视频怎么设置退出后仍然播放? -
寇尤左金: 操作方法如下:操作工具:vivo X9 操作系统:Funtouch OS 7.127 游戏:抖音v8.2 1、首先打开手机上的抖音,点击一个视频进入观看.如下图所示:2、然后打开右上角【...】.如下图所示:3、然后点击【播放设置】. 如下图所示:4、然后点击后台播放. 如下图所示:5、最后应用退出到后台,仍可继续播放.如下图所示:

城关区19130474133: 抖音保存本地怎么是灰色的 -
寇尤左金: 1.你买一个16路的音视频切换器就可以了 2.可以实现音视频同步,也有画中画,画外画等功能

城关区19130474133: 抖音暂停算播放次数吗
寇尤左金: 抖音视频放无数遍都不会暂停,除非网络中断.扩展知识:播放一次就暂停的情况基本不存在,而那一次播放很可能也是我们自己点了视频后的播放量.抖音播放在100以下甚至是个位数,只有两个原因,一个是视频问题,另外一个是账号问题.视频问题集中于视频违规了,在视频违规的情况下,抖音会不推送视频,检查视频是否违规的方法也很简单,让朋友到自己的抖音主页看看能否看到这个视频即可.

城关区19130474133: edius怎样做抖音里的 -
寇尤左金: 在edius里新建一个9:16的界面,就是手机视频比例.将自己的作品放进去剪辑即可.上传抖音后到企鹅赞代刷网弄点点赞分享什么的就可以了

城关区19130474133: 抖音长按屏幕边缘加速怎么没了 -
寇尤左金: 长按屏幕加速用不了应该是抖音版本不支持,或者是你的手机触屏不灵.具体操作方法:在抖音的播放界面,只要长按视频两秒钟,就会在手机屏幕下方弹出选项,其中包括“不感兴趣”、“保存至相册”、“倍速播放”、“一起看”等按钮,倍速播放目前提供0.5倍、正常、1.5倍、2倍等选项,目前,该功能只在单个视频中开放,下一个视频如果还需要倍速播放,则需要重新设置.

城关区19130474133: 怎样关闭抖音视频切换 -
寇尤左金: 关闭抖音切换模式(也称为“双击切换”腔岁模式)的步骤如下:1.打开抖音应用程序,并进入主页.2.在主页右下角找到并点击"我"图标,以进入个人资料页面.3.在个人资料页面上方,您会看到一个齿轮图标或设置图标,点击进入设置页...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网