vue实现视频播放,video 拉缩进度
时间: 2025-06-22 11:44:25 浏览: 14
### Vue 实现视频播放进度条拖动功能
在 Vue 中实现带有进度条拖动功能的视频播放器可以借助 `vue-video-player` 插件。此插件不仅能够提供跨平台一致性的用户体验,还支持多种高级特性如倍速播放、默认全屏等[^1]。
#### 安装 vue-video-player 插件
首先,在项目中安装所需的依赖包:
```bash
npm install vue-video-player --save
```
接着按照官方文档配置 Webpack 或其他构建工具以加载必要的样式文件。
#### 创建 VideoPlayer 组件
创建一个新的组件用于封装视频播放逻辑与UI界面设计:
```html
<template>
<div class="video-container">
<!-- 使用 video.js 的 player -->
<video-player ref="player"
:options="playerOptions"
@ready="onPlayerReady"
@play="onPlayerPlay"
@pause="onPlayerPause"
@timeupdate="onTimeUpdate"/>
<!-- 自定义进度条 -->
<input type="range" min="0" max="1" step="0.01" v-model="progress" @change="seekToProgress()">
</div>
</template>
<script>
export default {
data() {
return {
progress: 0,
playerOptions: {
sources: [{
src: 'https://yourdomain.com/path/to/video.mp4',
type: "video/mp4"
}],
autoplay: false,
controls: true, // 控制栏可见性
showPlayBtn: true // 是否显示播放/暂停按钮[^2]
}
};
},
methods: {
onPlayerReady(player) {},
onPlayerPlay(event){},
onPlayerPause(event){},
seekToProgress(){
this.$refs.player.currentTime(this.progress * this.$refs.player.duration());
},
onTimeUpdate(event){
const currentTime = event.target.currentTime;
const duration = event.target.duration;
if (duration > 0 && !isNaN(duration)) {
this.progress = currentTime / duration;
}
}
}
};
</script>
```
上述代码展示了如何利用 `vue-video-player` 和 HTML5 `<input>` 元素组合成一个具有基本控制面板(含播放/暂停键)及可拖拽进度条的简易版在线视频播放器。每当用户调整滑块位置时会触发 `@change` 事件并调用 `seekToProgress()` 方法更新当前播放时间;而当媒体资源的时间轴发生变化时,则通过监听 `@timeupdate` 来同步修改视图中的进度指示器状态。
对于更复杂的场景比如需要处理大量数据点的情况,可能还需要考虑性能优化措施,例如分页加载或懒加载策略来提高渲染效率[^3]。
阅读全文
相关推荐

















