vue实现视频进度加载
Vue 实现视频进度加载的方法
在 Vue 中实现视频进度加载功能,可以通过监听视频播放事件并结合进度条组件来完成。以下是具体实现步骤:
使用 <video> 标签和事件监听
在 Vue 模板中添加 <video> 标签,并绑定相关事件:
<template>
<div>
<video
ref="videoPlayer"
@timeupdate="updateProgress"
@loadedmetadata="setDuration"
controls
>
<source :src="videoSrc" type="video/mp4" />
</video>
<input
type="range"
v-model="progress"
min="0"
:max="duration"
@input="seekVideo"
/>
</div>
</template>
数据绑定和方法实现
在 Vue 的 data 和 methods 中定义相关变量和方法:
<script>
export default {
data() {
return {
videoSrc: 'path/to/video.mp4',
progress: 0,
duration: 0,
};
},
methods: {
updateProgress() {
this.progress = this.$refs.videoPlayer.currentTime;
},
setDuration() {
this.duration = this.$refs.videoPlayer.duration;
},
seekVideo() {
this.$refs.videoPlayer.currentTime = this.progress;
},
},
};
</script>
使用第三方库(可选)
如果需要更复杂的进度条功能,可以使用第三方库如 vue-video-player:
-
安装库:
npm install vue-video-player -
在 Vue 组件中使用:
import { videoPlayer } from 'vue-video-player';
export default { components: { videoPlayer, }, data() { return { playerOptions: { sources: [{ src: 'path/to/video.mp4', type: 'video/mp4', }], controls: true, }, }; }, };
#### 自定义样式
可以通过 CSS 美化进度条:
```css
<style>
video {
width: 100%;
}
input[type="range"] {
width: 100%;
margin-top: 10px;
}
</style>
注意事项
- 确保视频路径正确,且支持跨域播放(如果需要)。
- 移动端可能需要额外的触摸事件处理。
- 对于直播流,进度条的实现方式会有所不同,通常使用时间戳而非固定时长。







