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中引入阿里播放器的更多相关文章

  1. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  2. vue + element ui 阻止表单输入框回车刷新页面

    问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...

  3. Vue+Element UI 实现视频上传

    一.前言 项目中需要提供一个视频介绍,使用户能够快速.方便的了解如何使用产品以及注意事项. 前台使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后台提供视频上传AP ...

  4. vue+element ui 的tab 动态增减,切换时提示用户是否切换

    前言:工作中用到 vue+element ui 的前端框架,动态添加 Tab,删除 Tab,切换 Tab 时提示用户是否切换等,发现 element ui  有一个 bug,这里记录一下如何实现.转载 ...

  5. Vue+element ui table 导出到excel

    需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...

  6. 分享一个自搭的框架,使用Spring boot+Vue+Element UI

    废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...

  7. Element UI 中组件this.$message报错

    最近在做毕设的时候,用Element UI中的消息提示message一直报以下的错误: 展示的效果也不好看,没有图标什么的: 但我明明有在main.js引入了element-ui 呀,因为毕设时间很赶 ...

  8. 关于Element UI中页面样式小问题

    一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...

  9. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

随机推荐

  1. 为什么要在离线A/B测试中使用贝叶斯方法

    当涉及到假设检验时,贝叶斯方法可以取代经典的统计方法.这里将使用web分析的具体案例来演示我们的演示. 贝叶斯方法在经典统计中的重要性在此链接. https://towardsdatascience. ...

  2. OpenCV-Python 直方图-3:二维直方图 | 二十八

    目标 在本章中,我们将学习查找和绘制2D直方图.这将在以后的章节中有所帮助. 介绍 在第一篇文章中,我们计算并绘制了一维直方图. 之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值. 但是在 ...

  3. Java 泛型数组问题

    Java中不支持泛型数组, 以下代码会编译报错:generic array creation ArrayList<Integer>[] listArr = new ArrayList< ...

  4. SublimeのJedi (自动补全)

    关于 Sublime 3 - Jedi Package 的设置和使用方法 我是一枚小白,安装后 Sublime 后,想在码字时,达到如下效果: 打字时,自动提示相关内容 按Tab键,相关内容自动填充 ...

  5. 经验总结:超详细的 Linux C/C++ 学习路线!大厂面试指南

    ❝ 文章每周持续更新,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 最近在知乎经常被邀请回答类似如何学习C++和C++后台开 ...

  6. A - A FZU - 2205

    A - A FZU - 2205 一个国家有 N 个城市,国王不希望国家中存在三个城市之间能够互相直接到达,但道路要求尽可能的多,道路是双向边,且无重边无自环. 国王希望你最好能解决这个问题.求最多存 ...

  7. 前端上传视频、图片、文件等大文件 组件Plupload使用指南

    demo:https://blog.csdn.net/qq_30100043/article/details/78491993 Plupload上传插件中文帮助文档网址:http://www.phpi ...

  8. 汇编刷题:统计2000H开始的正负数的个数

    DATA SEGMENT ORG 2000H INFO DB 1,2,3,4,5,70H,71H,72H,80H,92H N_NUMS DB 00H P_NUMS DB 00H DATA ENDS C ...

  9. 【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)

    py文件: from django.utils.http import urlquote from rest_framework.views import APIView from django.sh ...

  10. mybatis源码分析--如何加载配置及初始化

    简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...