vue+element-ui中引入阿里播放器
1.在public文件下的index.html文件中插入以下代码:
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" /> <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
2.在你要调用播放器的vue文件中:
this.ideovSource = this.ideovUrl + this.$route.query.fileId + "/output.m3u8"
// 初始化播放器
this.player = new Aliplayer({
id: "J_prismPlayer", // 容器id
source: this.ideovSource,//视频地址
// cover: "http://cdn.img.mtedu.com/images/assignment/day_3.jpg", //播放器封面图
autoplay: false, // 是否自动播放
width: "100%", // 播放器宽度
height: "610px", // 播放器高度
playsinline: true,
"skinLayout": [
{
"name": "bigPlayButton",
"align": "blabs",
"x": 30,
"y": 80
},
{
"name": "H5Loading",
"align": "cc"
},
{
"name": "errorDisplay",
"align": "tlabs",
"x": 0,
"y": 0
},
{
"name": "infoDisplay"
},
{
"name": "tooltip",
"align": "blabs",
"x": 0,
"y": 56
},
{
"name": "thumbnail"
},
{
"name": "controlBar",
"align": "blabs",
"x": 0,
"y": 0,
"children": [
{
"name": "progress",
"align": "blabs",
"x": 0,
"y": 44
},
{
"name": "playButton",
"align": "tl",
"x": 15,
"y": 12
},
{
"name": "timeDisplay",
"align": "tl",
"x": 10,
"y": 7
},
{
"name": "fullScreenButton",
"align": "tr",
"x": 10,
"y": 12
},
{
"name": "volume",
"align": "tr",
"x": 5,
"y": 10
}
]
}
]
})
//skinLayout设置只显示全屏和音量按钮
配置好后如图:

默认的配置,打开后视频

如果你不知道怎么配置,可以看在线配置,然后在皮肤自定义中,勾选自己需要的功能,勾选好后在代码中查看它的配置。然后直接复制粘贴。

需求如下:
1.当用户开始播放视频后,每隔5秒打点一次,调后端接口记录当前学习时间,当视频报错、暂停、结束则停止打点
2.要记录用户观看时间,用户下次进入时不用从头看,直接快进到上次播放的位置,并且只有正在学习的才会快进到上次播放位置,已经学完的不用快进到上次播放的位置,用户可重新观看只是不再打点。
3.用户在观看视频的过程中不能一次拖动太多,当拖动时间大于15秒后,则给用户一个提示,并且就不再打点调用后端接口给后端实时跟新当前视频播放进度。
4.只有测评师才记录学习时间。
5.视频可以切换
具体代码:
//点击另外一个视频,则重新加载视频地址 that.player.loadByUrl(that.ideovSource)
var seeked = false;
that.player.on('play', function (e) {
let evaluator = []
if (that.userInfo.roleList.length !== 0) {
evaluator = that.userInfo.roleList.filter(function (item) {
//用户角色集合,2-等保测评师,3-内容管理员,4-联盟管理员,5-普通用户,6-讲师
if (item == 2) {
return item
}
})
}
//只有是测评师并且没有学习完时才进行打点
if (that.record.type !== 2 && evaluator.length !== 0) {
that.recordFun()
}
});
that.player.on('canplaythrough', function (e) {
if (!seeked) {
seeked = true;
if (that.record.type === 1) {
that.player.seek(Number(that.detailsDt.schedule));//设置播放到我上次播放的位置
}
}
});
recordFun代码:
recordFun() {
const that = this
that.intervalTime = setInterval(function () {
var currentTime = that.player.getCurrentTime();
that.record.schedule = currentTime
//1:学习中,2:学习完成
that.record.type = 1
that.$store.dispatch("CPE/recordAct", that.record)
}, 5000);
//清除定时器
function clear() {
if (that.intervalTime) {
clearInterval(that.intervalTime);
that.intervalTime = null;
}
}
this.player.on('ended', function (e) {
that.record.schedule = that.record.resourceSize
//1:学习中,2:学习完成
that.record.type = 2
that.$store.dispatch("CPE/recordAct", that.record)
clear();
});
this.player.on('pause',function (e) {
clear();
});
this.player.on('error',function (e) {
clear();
});
}
这段直接在初始化播放器下面插入就可以拉
//视频由暂停恢复为播放时触发。
that.player.on('completeSeek', function ({paramData}) {
//获取拖拽时间,大于5秒则不进行打点
if (paramData > 15) {
if (that.intervalTime) {
clearInterval(that.intervalTime);
that.intervalTime = null;
}
that.$message({
message: '拖拽时间不能大于15秒',
type: 'warning'
});
}
})
vue+element-ui中引入阿里播放器的更多相关文章
- vue+element ui中select组件选择失效问题原因与解决方法
codejing 2020-07-10 09:13:31 652 收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...
- vue + element ui 阻止表单输入框回车刷新页面
问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...
- Vue+Element UI 实现视频上传
一.前言 项目中需要提供一个视频介绍,使用户能够快速.方便的了解如何使用产品以及注意事项. 前台使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后台提供视频上传AP ...
- vue+element ui 的tab 动态增减,切换时提示用户是否切换
前言:工作中用到 vue+element ui 的前端框架,动态添加 Tab,删除 Tab,切换 Tab 时提示用户是否切换等,发现 element ui 有一个 bug,这里记录一下如何实现.转载 ...
- Vue+element ui table 导出到excel
需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...
- 分享一个自搭的框架,使用Spring boot+Vue+Element UI
废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...
- Element UI 中组件this.$message报错
最近在做毕设的时候,用Element UI中的消息提示message一直报以下的错误: 展示的效果也不好看,没有图标什么的: 但我明明有在main.js引入了element-ui 呀,因为毕设时间很赶 ...
- 关于Element UI中页面样式小问题
一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...
- vue + element ui 实现实现动态渲染表格
前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...
随机推荐
- nim博弈 LightOJ - 1253
主要是写一下nim博弈的理解,这个题有点奇怪,不知道为什么判断奇偶性,如果有大佬知道还请讲解一下. //nim博弈 //a[0]~a[i] 异或结果为k 若k=0 则为平衡态 否则为非平衡态 //平衡 ...
- vscode下搭建typescript时提示"无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称"错误的解决方法
根据网上的教程,安装了node.js后,再安装了typescript,,,这时候编译生成或者在vscode的终端里调用npm或者tsc --version时,总是提示 npm : 无法将"n ...
- iOS 重构AppDelegate
一.Massive AppDelegate AppDelegate 是应用程序的根对象,它连接应用程序和系统,确保应用程序与系统以及其他应用程序正确的交互,通常被认为是每个 iOS 项目的核心. 随着 ...
- Java中性能优化的45个细节
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...
- Mysql数据库主键,外键,索引概述
主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id ...
- 模块 pillow图像处理
Pillow概况 PIL是Python的一种图像处理工具. PIL支持大部分的图像格式,高效并强大. 核心库设计用来高速访问基于基于像素的数据存储,给这个通用的图像处理工具提供了坚实的基础. 一.读. ...
- 深入解读ES6系列(一)
ECMAScript 6(ES6)简介 前言: 哈喽小伙伴们,爱说'废'话的Z又回来了,欢迎来到Super IT曾的博客时间,我说啦这个月要带的福利,说了更的博客肯定不能水你们,要一起进步学习嘛,今天 ...
- 详细解析kafka之 kafka消费者组与重平衡机制
消费组组(Consumer group)可以说是kafka很有亮点的一个设计.传统的消息引擎处理模型主要有两种,队列模型,和发布-订阅模型. 队列模型:早期消息处理引擎就是按照队列模型设计的,所谓队列 ...
- Shell:Day07.笔记
函数:1.函数介绍function 为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能. 且,这个功能在后面的代码中,会重复调用: def 2.函数的语法格式 函数的写 ...
- 使用mpvue开发小程序教程
从vue到mpvue再到微信小程序,这么几天下来感觉被搞晕了.三者之间的很多功能存在差异,项目也快接近尾声了,坑也踩了很多了,现在给后来的你们一点总结性经验: 1. 在模板中,动态插入HTML的v-h ...