广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue使用video标签实现视频播放
  • 972
分享到

Vue使用video标签实现视频播放

2024-04-02 19:04:59 972人浏览 独家记忆
摘要

本文项目为大家分享了Vue使用video标签实现视频播放的具体代码,供大家参考,具体内容如下 项目需求:动态显示视频滚动条、禁止视频下载、播放时每5s更新当前时长、每10分钟暂停视频

本文项目为大家分享了Vue使用video标签实现视频播放的具体代码,供大家参考,具体内容如下

项目需求:动态显示视频滚动条、禁止视频下载、播放时每5s更新当前时长、每10分钟暂停视频显示提示。
之前做视频播放时基本都是使用 vue-video-player 组件,其原因为 封装功能齐全、播放源兼容性好等。
通过这次项目需求,也深入的学习了 video 标签的属性及方法。具体在这里跟大家分享一下。

具体使用方法如下

<template>
  <!-- Video组件 -->
  <div id="common-video" class="h-100">
    <div :class="{ isshow: control }" class="h-100">
      <video
        ref="myVideo"
        :poster="poster"
        :src="src"
        :controls="controls"
        oncontextmenu="return false"
        @timeupdate="timeupdate"
        controlslist="nodownload"
        class="video-box"
      ></video>
      <img
        src="@/assets/images/playbtn.png"
        alt=""
        @click="operateVideo"
        class="pointer operate-btn"
        :class="{ 'fade-out': videoState }"
      />
    </div>
  </div>
</template>

<script>
export default {
  name: "CommonVideo",
  data() {
    return {
      videoState: false, // 视频播放状态
      // 学时
      studyTime: {
        currentTime: 0, // 当前已学时长
        duration: 0 // 总时长
      },
      timer: {}, // 定时器
      pauseTimer: {} // 暂停定时器
    };
  },
  
  props: {
    poster: {
      type: String,
      required: false,
      default: ""
    },
    src: {
      type: String,
      required: true
    },
    controls: {
      type: Boolean,
      required: false,
      default: true
    },
    control: {
      type: Boolean,
      required: false,
      default: false
    },
    videoData: {
      type: Object,
      required: true
    }
  },
  mounted() {
    // 监听视频播放
    this.$refs.myVideo.addEventListener("play", () => {
      console.log("video is playing");
      this.openTimer();
    });
    // 监听视频暂停
    this.$refs.myVideo.addEventListener("pause", () => {
      console.log("video is stop");
      this.closeTimer();
    });
  },
  methods: {
    // 开启定时器
    openTimer() {
      this.timer = setInterval(() => {
        this.$emit("videoStudyTime", this.studyTime);
      }, 5000);
    },
    // 关闭定时器
    closeTimer() {
      clearInterval(this.timer);
      this.$emit("videoStudyTime", this.studyTime);
    },
    // 开启暂停定时器
    openPauseTimer() {
      this.pauseTimer = setInterval(() => {
        this.hintOperate();
      }, 600000);
    },
    // 关闭暂停定时器
    closePauseTimer() {
      clearInterval(this.pauseTimer);
    },
    // 提示操作
    hintOperate() {
      this.operateVideo();
      this.$alert("请点击确认继续学习", "提示", {
        confirmButtonText: "确定",
        confirmButtonClass: "hint-btn",
        showClose: false,
        callback: action => {
          this.$refs.myVideo.currentTime = this.videoData.currentTime;
          this.operateVideo();
          this.openPauseTimer();
        }
      });
    },
    // 获取当前播放位置
    timeupdate(e) {
      this.studyTime.currentTime = e.target.currentTime;
      this.studyTime.duration = e.target.duration ? e.target.duration : 0;
    },
    // 操作视频播放、暂停
    operateVideo() {
      if (!this.src) {
        this.$message({ message: "暂无视频资源,请查看其他视频!" });
        return false;
      }
      if (this.$refs.myVideo.paused) {
        this.$refs.myVideo.play();
        this.videoState = true;
      } else {
        this.$refs.myVideo.pause();
        this.videoState = false;
      }
    }
  },
  watch: {
    // 监听操作
    videoData(val, oldVal) {
      const { currentTime, duration } = val;
      if (currentTime && duration && currentTime < duration) {
        this.hintOperate();
      }
    }
  }
};
</script>

<style lang="less">
#common-video {
  position: relative;
  .video-box {
    box-sizing: border-box;
    border: 0;
    display: block;
    width: 100%;
    height: 100%;
    outline: none !important;
  }
  .isShow {
    //进度条
    video::-WEBkit-media-controls-timeline {
      display: none;
    }
  }
  video::-webkit-media-controls-play-button {
    visibility: hidden;
  }
  .operate-btn {
    display: block;
    width: 60px;
    height: 60px;
    position: absolute;
    top: calc(50% - 30px);
    left: calc(50% - 30px);
  }
  .operate-btn:hover {
    opacity: 0.8;
  }
  .fade-out {
    opacity: 0;
  }
}
</style>

注:

1.使用 isShow 属性配合 CSS 样式动态展示视频滚动条
2.使用 video 标签的 οncοntextmenu=“return false” 属性来实现禁止下载
3.使用 video 标签的 @timeupdate=“timeupdate” 方法来时间视频播放进度监听
4.使用 vue 的 ref 属性为 video 标签绑定监听事件,来实现其他功能,如时长统计、延迟提示、动态显示图标播放按钮等功能。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Vue使用video标签实现视频播放

本文链接: https://www.lsjlt.com/news/137168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue使用video标签实现视频播放
    本文项目为大家分享了Vue使用video标签实现视频播放的具体代码,供大家参考,具体内容如下 项目需求:动态显示视频滚动条、禁止视频下载、播放时每5s更新当前时长、每10分钟暂停视频...
    99+
    2022-11-12
  • vue中怎么使用h5 video标签实现弹窗播放本地视频
    这篇“vue中怎么使用h5 video标签实现弹窗播放本地视频”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue...
    99+
    2023-06-30
  • vue-video-player 播放m3u8视频流的实现
    该问题网上答案较少,翻阅github得到想要的答案,在此记录一下 首先,为了减少包体积,在组件中局部引入vue-video-player(在main.j s中引入会增加包体积) 播放...
    99+
    2022-11-13
  • html5中video标签不能播放视频的示例分析
    小编给大家分享一下html5中video标签不能播放视频的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   在页面中...
    99+
    2022-10-19
  • vue中使用h5video标签实现弹窗播放本地视频的方法
    目录1.弹窗的打开关闭2. 本地视频资源路径的引入3. 视频播放完毕自动关闭弹窗4. 视频在弹窗中自适应大小参考h5 < video >标签的用法 在开发过程中主要涉及到...
    99+
    2022-11-13
  • Vue中Video标签播放解析后短视频去水印无响应解决
    目录问题:情景复现:链接在Video标签打不开链接浏览器正常打开出现的原理解决方式前端解决全局添加标签Vue单页面添加标签完美解决:问题: 发送Ajax请求,请求后端接口解析抖音无水...
    99+
    2022-11-13
  • vue使用vue-video-player插件播放视频的步骤讲解
    目录前言官网文档步骤下载依赖和配置编写页面本人项目播放视频代码实际效果常用回调结语前言 在我的一个项目中,需要进行播放视频,于是进行研究,那么本次也是将我怎么用vue-video-p...
    99+
    2022-12-21
    vue视频播放器插件 vue-video-player播放视频 vue-video-player插件
  • Vue中video标签如何实现不静音自动播放
    由于浏览器厂商为了提高用户体验禁止video标签可以有声的自动播放,也就是说如果想让video标签能够自动播放必须给video标签添加muted属性。 但是在开发的过程中我们需要用视...
    99+
    2023-01-31
    vue中使用video标签视频播放 vue video vue视频播放组件
  • python中Pyqt5使用Qlabel标签进行视频播放
    目录一、简介二、基本用法2.1 QLabel控件   2.2 QLabel常用的信号(事件)三、QLabel播放视频 3.1 QTimer3....
    99+
    2022-11-10
  • HTML5 video 视频标签的使用方法
    这篇文章主要介绍“HTML5 video 视频标签的使用方法”,在日常操作中,相信很多人在HTML5 video 视频标签的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • vue+video.js实现视频播放列表
    本文实例为大家分享了vue+video.js实现视频播放列表的具体代码,供大家参考,具体内容如下 1.引入Video.js npm install --save-dev vide...
    99+
    2022-11-12
  • HTML5如何通过Vedio标签实现视频循环播放
    小编给大家分享一下HTML5如何通过Vedio标签实现视频循环播放,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!要实现网页播放视频在HTML5以前是通过<e...
    99+
    2023-06-09
  • python中Pyqt5怎么使用Qlabel标签进行视频播放
    本文小编为大家详细介绍“python中Pyqt5怎么使用Qlabel标签进行视频播放”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中Pyqt5怎么使用Qlabel标签进行视频播放”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-30
  • vue使用vue-video-player无法播放本地视频的问题及解决
    目录使用vue-video-player无法播放本地视频方法使用vue-video-player播放视频及遇到的问题安装引入使用vue-video-player无法播放本地视频 方法...
    99+
    2022-11-13
  • 微信小程序使用视频播放器video组件
    本文实例为大家分享了微信小程序使用视频播放器video组件的具体代码,供大家参考,具体内容如下 在app.json中配置好页面路由和权限。 1.app.json { "pag...
    99+
    2022-11-12
  • react-native封装视频播放器react-native-video的使用
    目录前言react-native-orientation-lockerreact-native-video全屏实现方案(可参考)尾言前言 最近工作业务用到了react-native-...
    99+
    2023-01-31
    react native 视频播放器 react native video
  • 使用JMF实现java视频播放器
    JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去 package c...
    99+
    2023-05-31
    jmf java 播放器
  • vue+video.js怎么实现视频播放列表
    这篇文章主要讲解了“vue+video.js怎么实现视频播放列表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue+video.js怎么实现视频播放列表”吧!具体内容如下1.引入Video...
    99+
    2023-06-25
  • vue中如何实现视频播放暂停
    这篇文章主要为大家展示了“vue中如何实现视频播放暂停”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中如何实现视频播放暂停”这篇文章吧。vue中的视频播放...
    99+
    2022-10-19
  • H5页面使用audio标签播放音频
    H5页面播放音乐其实很简单,只需要用<audio>这个标签就行十分方便。 路径选在音乐所在位置就行了。 <audio id="bgMusic" src="js/2....
    99+
    2023-03-07
    audio标签的使用方法 audio标签支持的音频格式 audio标签自动播放
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作