1.安装依赖(亲测5.0.1版本可用,最新版本会找不到'vue-video-player/src/custom-theme.css'这个样式)

yarn add  vue-video-player@5.0.1

2.main.js里增加以下代码

1 import VideoPlayer from 'vue-video-player/src'
2 import 'video.js/dist/video-js.css'
3 require('vue-video-player/src/custom-theme.css')
4
5 const app = createApp(App)
6 installElementPlus(app)
7 installIcons(app)
8 app.use(store).use(VideoPlayer).use(router).mount('#app')

3.增加一个组件Videoplayer

  1 <template>
2 <div class="course_node_video">
3 <video-player
4 class="video-player vjs-custom-skin"
5 ref="videoPlayerRef"
6 :playsinline="true"
7 :options="playerOptions"
8 @ready="playerReadied"
9 @pause="onPlayerPause($event)"
10 @timeupdate="onPlayerTimeupdate($event)"
11 customEventName="customstatechangedeventname"
12 @play="onPlayerPlay"
13 @ended="onPlayerEnded"
14 @waiting="onPlayerWaiting"
15 @playing="onPlayerPlaying"
16 @loadeddata="onPlayerLoadeddata"
17 @canplay="onPlayerCanplay"
18 @canplaythrough="onPlayerCanplaythrough"
19 @statechanged="playerStateChanged"
20 >
21 </video-player>
22 </div>
23 </template>
24
25 <script setup>
26 import { ref, onMounted, onUnmounted, nextTick, watch } from 'vue'
27 const emits = defineEmits([
28 'handleCurrentTime',
29 'onPlayerPause',
30 'onPlayerPlay',
31 'playerStateChanged',
32 'onPlayerEnded',
33 'onPlayerWaiting',
34 'onPlayerPlaying',
35 'onPlayerLoadeddata',
36 'onPlayerCanplay',
37 'onPlayerCanplaythrough'
38 ])
39 const videoPlayerRef = ref()
40 const playerOptions = ref({
41 playbackRates: [0, 0.5, 1.0, 1.5, 2.0], // 可选的播放速度
42 autoplay: false, // 如果为true,浏览器准备好时开始回放。
43 muted: false, // 默认情况下将会消除任何音频。
44 loop: false, // 是否视频一结束就重新开始。
45 preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
46 language: 'zh-CN', // zh-CN 需要main.js全局引入才可以生效
47 aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
48 fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
49 sources: [
50 {
51 type: 'video/mp4', // 类型
52 src: 'https://qkodo.playlistmusic.com.cn/transcode_1080/video/2dd0dd6bb83b71d16c6313d0411d26aa.mp4' // url地址https://qkodo.playlistmusic.com.cn/transcode_1080/video/2dd0dd6bb83b71d16c6313d0411d26aa.mp4
53 }
54 ],
55 poster: '', // 封面地址
56 notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
57 controlBar: {
58 // 当前时间和持续时间的分隔符
59 timeDivider: true,
60 // 显示持续时间
61 durationDisplay: true,
62 // 是否显示剩余时间功能
63 remainingTimeDisplay: false,
64 // 是否显示全屏按钮
65 fullscreenToggle: true,
66 // 播放暂停按钮
67 playToggle: true,
68 // 音量控制
69 volumeMenuButton: false,
70 // 当前播放时间
71 currentTimeDisplay: true,
72 // 点播流时,播放进度条,seek控制
73 progressControl: true,
74 // 直播流时,显示LIVE
75 liveDisplay: true,
76 // 播放速率,当前只有html5模式下才支持设置播放速率
77 playbackRateMenuButton: true
78 }
79 })
80
81 const currentTime = ref(0)
82 const playtimes = ref(7)
83 // 视频播放
84 const videoPlay = () => {
85 videoPlayerRef.value.player.play()
86 }
87 // 视频暂停
88 const videoPause = () => {
89 videoPlayerRef.value.player.pause()
90 }
91 // 视频静音
92 const videoMute = () => {
93 videoPlayerRef.value.player.muted(true)
94 }
95 // 获取视频播放进度 进度更新(当前播放位置发生变化时触发)(视频接收到新内容会一直调用)(高频调用)
96 const onPlayerTimeupdate = (player) => {
97 emits('handleCurrentTime', player.cache_.currentTime)
98 }
99 // 设置视频开始的进度 准备就绪(预加载前会调用)(初始化调用)
100 const playerReadied = (player) => {
101 player.currentTime(currentTime.value)
102 }
103 // 暂停回调 将视频播放的时间保存 暂停回调(暂停时调用)(用户操作调用)
104 const onPlayerPause = (player) => {
105 console.log('player pause currentTime!', player.cache_.currentTime)
106 emits('onPlayerPause', player.cache_.currentTime)
107 }
108 // 播放回调(播放时会调用)(用户操作调用)
109 const onPlayerPlay = (player) => {
110 emits('onPlayerPlay', player)
111 }
112 // 播放状态改变回调
113 const playerStateChanged = (playerCurrentState) => {
114 console.log('数据变化', playerCurrentState)
115 emits('playerStateChanged', playerCurrentState)
116 }
117 // 视频播完回调 (结束)(视频播放完毕调用)
118 const onPlayerEnded = (player) => {
119 console.log('结束', player)
120 emits('onPlayerEnded', player)
121 }
122 // 等待(视频中出现loading就会调用,加载时调用)(高频调用)
123 const onPlayerWaiting = (player) => {
124 console.log('等待', player)
125 emits('onPlayerWaiting', player)
126 }
127 // 播放中(进入播放状态会调用)(等待onPlayerWaiting和播放onPlayerPlay执行后会调用)(高频调用)
128 const onPlayerPlaying = (player) => {
129 console.log('播放中', player)
130 emits('onPlayerPlaying', player)
131 }
132 // 当播放器在当前播放位置下载数据时触发
133 const onPlayerLoadeddata = (player) => {
134 console.log('预加载', player)
135 emits('onPlayerLoadeddata', player)
136 }
137 // 媒体的readyState为HAVE_FUTURE_DATA或更高(预加载onPlayerLoadeddata调用后会调用)(初始化调用)
138 const onPlayerCanplay = (player) => {
139 console.log('是否播放', player)
140 emits('onPlayerCanplay', player)
141 }
142 // 能够从头到尾播放(是否播放onPlayerCanplay调用后会调用)(初始化调用)这意味着可以在不缓冲的情况下播放整个媒体文件
143 const onPlayerCanplaythrough = (player) => {
144 console.log('能够从头到尾播放', player)
145 emits('onPlayerCanplaythrough', player)
146 }
147 </script>
148
149 <style lang="scss" scoped>
150 .course_node_video {
151 width: 100%;
152 height: auto;
153 margin: 0 auto;
154 text-align: center;
155 object-fit: fill;
156 }
157 ::v-deep video {
158 width: 100% !important;
159 height: calc(100vh - 200px) !important;
160 object-fit: fill;
161 }
162 </style>

4.其他页面调用:

<div class="video-box">
<video-player
@onPlayerPlay="onPlayerPlay"
@onPlayerPause="onPlayerPause"
@onPlayerEnded="onPlayerEnded"
@handleCurrentTime="handleCurrentTime"
></video-player>
</div>

https://blog.csdn.net/junx666/article/details/133879641

Vue中实现视频播放——vue-video-player、dplayer

https://blog.csdn.net/m0_46318298/article/details/132225776

Vue3使用vue-video-player组件的更多相关文章

  1. Unity 播放 带 alpha 通道的视频(Video Player组件)

    孙广东  2017.6.18 http://blog.csdn.NET/u010019717 通常是  .webm类型文件!!!!!  你可以下载这个文件到本地: Http://tsubakit1.s ...

  2. vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件

    如果你的vue2代码之前是使用vue-class-component 类组件模式写的.选择可以使用 https://github.com/facing-dev/vue-facing-decorator ...

  3. 手把手从零开始---封装一个vue视频播放器组件

    现在,在网页上播放视频已经越来越流行,但是网上的资料鱼龙混杂,很难找到自己想要的,今天小编就自己的亲身开发体验,手把手从零开始---封装一个vue视频播放器组件. 作为一个老道的前端搬砖师,怎么可能会 ...

  4. 纯小白入手 vue3.0 CLI - 2.1 - 组件 ( component )

    vue3.0 CLI 真小白入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0Study  ...

  5. vue3系列:vue3.0自定义弹框组件V3Popup|vue3.x手机端弹框组件

    基于Vue3.0开发的轻量级手机端弹框组件V3Popup. 之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框 ...

  6. 关于Vue中根组件与组件树的理解

    在观看了b站的关于Vue3的教学视频后,对Vue的根组件与组件树进行简单的总结下 一.实例化Vue应用 // 此时,app就是一个Vue应用的实例,或者说是一个对象 const app = Vue.c ...

  7. Vue 给子组件传递参数

    Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...

  8. Vue.js说说组件

    什么是组件:组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能.在有些情况下,组件也可以是原生HTM ...

  9. Vue.js多重组件嵌套

    Vue.js多重组件嵌套 Vue.js中提供了非常棒的组件化思想,组件提高了代码的复用性.今天我们来实现一个形如 <app> <app-header></app-head ...

  10. 基于Vue封装分页组件

    使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} ...

随机推荐

  1. vue的响应式原理:依赖追踪

    在明白原理之前,我们有很多表面现象.使用场景需要记忆.明白了原理后,你会发现它们已经不需要记了,因为从原理出发,你自己都能把它们推导出来,一切是那么的自然而然.感觉就是:这还用记吗?很明显嘛! 之前我 ...

  2. [NOI online22提高A] 丹钓战

    题目描述 有 \(n\) 个二元组 \((a_i, b_i)\),编号为 1 到 n. 有一个初始为空的栈 SS,向其中加入元素 \((a_i, b_i)\) 时,先不断弹出栈顶元素直至栈空或栈顶元素 ...

  3. zookeeper JavaApi 查询节点

    /** * 1.查询数据 :get * 2.查询子节点 : ls * 3.查询节点的状态信息 :ls -s * * */ @Test public void testGet1() throws Exc ...

  4. 单元测试平台搭建:sonarQube+sonarScanner+Jenkins+jacoco

    单元测试平台搭建及结果分析 一.方案 需求目标:提高单元测试覆盖率和规范代码编写规范 选用工具:Sonarqube.sonarqube Scanner.Jenkins.jacoco 方案: 工程中引入 ...

  5. navicat连接服务器mysql

    navicat连接服务器mysql 第一步:配置防火墙 连接服务器的mysql数据库,我们首先需要在服务器上放行3306端口(MySQL服务对应的端口),进入服务器管理页面防火墙,点击添加规则,放行3 ...

  6. postman——下载与安装

    一.postman是什么? 那么,Postman是个什么东东呢?Postman的官网上这么介绍它:"Modern software is built on APIs,Postman help ...

  7. 2023.3 Idea配置Tomcat环境

    tomcat配置 下载tomcat 先到官网(按住Ctrl再左键点击直接打开官网)下载64位的tomcat,网速慢就用魔法下 创建项目.模块 打开idea(我用的是最新的idea的专业版,ui有点变化 ...

  8. 终于肝完了!全网最全、最详细、最全面的 Hadoop大数据学习教程( 2023最新版 )

    大家好,我是民工哥! 前面给大家介绍了:关系型数据库 MySQL . NoSQL 数据库 Redis . MongoDB .搜索引擎 ElasticSearch 等知识体系学习的文章. 在当今这样的就 ...

  9. DVWA CSRF:Cross-site request forgery(跨站请求伪造)全等级

    CSRF:Cross-site request forgery(跨站请求伪造) 目录: CSRF:Cross-site request forgery(跨站请求伪造) 1.Low 2.Medium 3 ...

  10. SPSC Queue

    在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...