vue3 video 视频播放时禁止拖动进度条

一、需求背景

视频第一次观看不支持快进,已观看过的内容重复观看支持快进。

视频页面:有视频当前状态,未观看的视频为待学习状态,观看完一次都是已完成的状态。

二、解决思路

根据需求,首先前端需要拿到一个状态进行判断,用户是否是第一次观看视频,如果是第一次观看视频,则不允许拖动进度条;已观看过的视频则正常拖动,不作限制。

三、解决方法

1.可以看到后端数据中有个学习状态learnStatus 字段, 0 代表未学习状态,2代表观看完成一次的已完成状态,作为能拖动进度条的判断依据:

2.html中,与视频标签同级可以加一个view,用来遮挡住进度条:

 <div class="video">
           <Video
              :id="'video' + jumpNum"
              :src="videoUrl"
              controls
              showPlay
              class="videoStyle"
              width="100%"
              height="550"
              @play="handlePlay(jumpNum)"
              @pause="onPause(index)"
            ></Video>
<!--视频第一次观看不支持快进,已观看过的内容重复观看支持快进。-->
            <div v-if="curLearnStatus <= '1'" class="cover"></div> 
          </div>
<!--视频第一次观看不支持快进,已观看过的内容重复观看支持快进。-->
            <div v-if="curLearnStatus <= '1'" class="cover"></div> 

3.在css 中加入样式

.video {
  width: 100%;
  position: relative;
  .cover {
    position: absolute;
    bottom: 4px;
    width: 100%;
    height: 5%;
    background-color: rgba(255, 255, 255, 0.007);
    // margin-left: 100px;
    z-index: 99;
  }
}

四、效果

可以先将上面的背景色改一下颜色(改为红色),看下效果:学习中和待学习会出现遮挡,不能快进。

“已完成”状态的视频不会出现遮挡条

四、其他

使用cover-view

    <div class="video">
            <Video
              :id="'video' + jumpNum"
              :src="videoUrl"
              controls
              showPlay
              class="videoStyle"
              width="100%"
              height="550"
              @play="handlePlay(jumpNum)"
              @pause="onPause(index)"
            ></Video>
            <cover-view v-if="curLearnStatus <= '1'" class="cover"></cover-view>
            <!-- <div v-if="curLearnStatus <= '1'" class="cover"></div> -->
          </div>

但是cove-view 的宽度好像是针对全屏。

五、未解决问题

视频全屏状态下的禁止拖动还未解决。。。。

要实现Vue3视频播放器,允许拖动进度条,打点评论弹幕,并在进度条上显示打点,可以按照以下步骤进行: 1. 安装依赖:首先,你需要安装Vue3和其他必要的依赖。 ```bash npm install vue@next video.js vue-video-player ``` 2. 创建视频播放器组件:在Vue3中,创建一个视频播放器组件。你可以使用vue-video-player来快速实现。 ```vue <template> <div> <video-player ref="videoPlayer" :options="playerOptions"></video-player> <div class="progress-bar" @click="seek"> <div class="progress" :style="{ width: progress + &#39;%&#39; }"></div> <div v-for="marker in markers" class="marker" :style="{ left: marker.time * 100 + &#39;%&#39; }" ></div> </div> </div> </template> <script> import VueVideoPlayer from &#39;vue-video-player&#39;; import &#39;video.js/dist/video-js.css&#39;; import &#39;vue-video-player/src/custom-theme.css&#39;; export default { components: { VueVideoPlayer, }, data() { return { playerOptions: { // 设置视频源 sources: [ { src: &#39;your_video_url&#39;, type: &#39;video/mp4&#39;, }, ], }, progress: 0, markers: [ // 打点评论弹幕信息 { time: 0.1, comment: &#39;这是一个打点评论弹幕&#39; }, // ... ], }; }, methods: { // 拖动进度条 seek(event) { const progressBar = event.currentTarget; const rect = progressBar.getBoundingClientRect(); const offsetX = event.clientX - rect.left; const progress = offsetX / rect.width; const duration = this.$refs.videoPlayer.duration(); const currentTime = duration * progress; this.$refs.videoPlayer.currentTime(currentTime); }, }, }; </script> <style scoped> .progress-bar { width: 100%; height: 10px; background-color: #ddd; position: relative; cursor: pointer; } .progress { height: 100%; background-color: #333; width: 0; } .marker { position: absolute; top: -5px; width: 5px; height: 20px; background-color: red; } </style> ``` 在这个示例中,我们首先引入了vue-video-player库,并使用该库创建了一个视频播放器组件。在组件中,我们添加了一个进度条,并通过点击进度条来实现拖动进度。我们还在进度条上使用v-for指令来显示打点的评论弹幕。 注意替换`your_video_url`为你的视频地址,并根据实际需求修改打点评论弹幕的信息。 这样,就可以实现Vue3视频播放器,允许拖动进度条,打点评论弹幕,并在进度条上显示打点的功能。你可以根据自己的需求进行定制和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值