当前位置: 首页 > article >正文

vue3+vant实现视频播放(含首次禁止进度条拖拽,视频看完后恢复,保存播放视频进度,刷新及下次进入继续播放,判断视频有无全部看完等)

1、效果图

2、

<div>
  <video
    controls
    class="video_player"
    ref="videoPlayer"
    :src="videoSrc"
    @timeupdate="handleTimeUpdate"
    @play="onPlay"
    @pause="onPause"
    @ended="onVideoEnded"
  ></video>

    <!--添加遮罩层视频第一次观看不支持快进,已观看过的内容重复观看支持快进。-->
    <div v-if="videoPlayEnd == false" class="cover"></div>
</div>

<div class="right_box" v-if="videoPlayEnd == true">
   <img class="img_style" src="@/assets/image/已看完.png" />
   <div class="text_right">已看完</div>
</div>
<div class="right_box" v-if="videoPlayEnd == false">
   <img class="img_style" src="@/assets/image/未看完.png" />
   <div class="text2_right">未看完</div>
</div>


const videoPlayEnd = ref(false) //视频播放结束标识
const lastTime = ref(0) //视频上次播放的时间
//视频播放
const onPlay = () => {
  console.log('视频播放')
}
//视频暂停
const onPause = () => {
  console.log('视频暂停')
}
//播放结束
const onVideoEnded = () => {
  console.log('播放结束')
  videoPlayEnd.value = true
}
const handleTimeUpdate = () => {
  if (videoPlayer.value) {
    const currentTime = videoPlayer.value.currentTime //当前播放的时间
    lastTime.value = currentTime //保存当前播放时间
    localStorage.setItem('videoTime', lastTime.value)
  }
}

onMounted(() => {
  //实现保存视频进度,下次进来继续播放
  const savedTime = localStorage.getItem('videoTime')
  if (savedTime) {
    //检查是否存在保存的时间
    videoPlayer.value.currentTime = parseFloat(savedTime) //转化成浮点数
  }
  handleTimeUpdate()
})

 


http://www.kler.cn/a/372328.html

相关文章:

  • 1、pycharm、python下载与安装
  • 【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
  • 通过 4 种方法将数据从 OnePlus 传输到Android
  • Python 实现 冒泡排序算法示例
  • Android通知监听权限NotificationListener
  • Dockerfile运行指令
  • 记第一次本地编译seatunnel源码
  • 常见网安面试题
  • git log 用法详解
  • mysql遇到的问题
  • Optuna深度学习自动调参工具使用简明教程
  • Java 文件路径一口气讲完!(* ̄3 ̄)╭
  • 牛客网刷题(3)(Java的几种常用包)
  • 实操|如何优雅的实现RAG与GraphRAG应用中的知识文档增量更新?
  • Webserver(1.8)操作函数
  • CSS常见适配布局方式
  • 逆变器竞品分析--倍思500W方案【2024/10/30】
  • Android 快捷方式
  • 海外共享奶牛牧场投资源码-理财金融源码-基金源码-共享经济源码
  • 《掌握 Java:从基础到高级概念的综合指南》(3/15)
  • 多GPU训练大语言模型,DDP, ZeRO 和 FSDP
  • 【再谈设计模式】单例模式~唯一性的守护者
  • Dockerfile制作Oracle19c镜像
  • xpath爬虫
  • 多线程显示 CSV 2 PNG 倒计时循环播放
  • 低功耗模组学习指南:从入门到精通通过MQTT连接实现远程控制