基于vue-video-player自定义播放器的方法

发布时间:2019-01-07 发布网站:编程之家

编程之家收集整理的这篇文章主要介绍了基于vue-video-player自定义播放器的方法,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

先看一下效果。

图1--显示侧边栏

图2-收起侧边栏;

图三:全屏。

写在前面

本次项目中需要用到vue,vue-video-player,我用的是iview的ui框架,但是ui框架无妨,这里关注的是基于video.js开发的vue-video-player的使用,以及如何操作video.js中的api。

vue-video-player 项目地址:。

video.js文档地址:。

项目目录:

一、外层ui布局

图一中可以看到,本次项目使用的是两栏自适应布局,其中,右侧为播放列表,固定宽度500px,左边是播放器box,播放列表box可根据手柄点击展开或收起,而播放器box也跟随播放列表的展开/收缩进行宽度自适应。

(因录制动画太大传不上,可clone我的程序下来运行可见)。

html代码结构如此:

收缩展开的时候加上一个过度动画,这里选择使用css手写动画:

[css] view plain copy

.transition{

transition: all 1s ease;

-moz-transition: all 1s ease;

-webkit-transition: all 1s ease;

-o-transition: all 1s ease;

}

[css] view plain copy

.toLeft{

.transition;

margin-right: 540px !important;

}

.toRight{

.transition;

margin-right: 40px !important;

}

.toHide{

.transition;

right: -500px !important;

}

.toShow{

.transition;

right: 0px !important;

}

[css] view plain copy

// 播放区

.player-box{

margin-right: 540px;

height: 100%;

position: relative;

}

[css] view plain copy

//侧边信息区

.info-box{

width: 520px;

height: 100%;

background: transparent;

position: relative;

overflow: hidden;

[css] view plain copy

// 内容区

.content{

background: #292929;

position: relative;

padding: 20px 0 20px 20px;

}

二、播放器ui

整个自定义的播放器ui封装成了一个组件--CostomVedio.vue,播放区使用的是vue-video-player的播放器,但是底部控制栏是自定义的,不使用播放器自带的controlBar,通常通用的这些都不符合设计哥哥的要求,所以我们需要自定义播放器UI。

html结构代码如下:

[html] view plain copy

SEOver="videoMouSEOver">

{{playerCtrl.currentTime}}/{{playerCtrl.duration}}

具体思路就是,使用播放器铺满播放区,使用position定位将自定义的controlBar固定在播放区的底部,这里注意controlBar的z-index一定要足够大,否则在全屏的时候不在最上层看不到。

css样式:

[css] view plain copy

三、实现自定义controlBar功能

接下来就是实现自定义controlBar的功能,如播放,暂停,下一曲,播放进度,剩余时间,全屏,音量调节等。

这里我们肯定要先看video.js的相应api了,虽然是英文的但是上边写的很清楚,很容易看明白。

video.js api文档地址:

1. 播放,暂停,下一曲,全屏主要就是监听我们添加的自定义按钮click事件,然后调用播放器API执行相应操作,并改变状态。

[javascript] view plain copy

// 播放

play(){

this.player.play();

},

// 暂停

pause(){

this.player.pause();

},

//下一曲

nextClick(){

console.log("自定义","下一曲点击");

},

//全屏

fullScreenHandle(){

console.log("全屏");

if(!this.player.isFullscreen()){

this.player.requestFullscreen();

this.player.isFullscreen(true);

}else{

this.player.exitFullscreen();

this.player.isFullscreen(false);

}

},

当然,在vue-video-player中的播放器会在回调方法中监听状态的变化:

[html] view plain copy

我们可以根据这些状态变化,相应的改变我们的UI,比如播放时显示“暂停”按钮,暂停时显示“播放”等功能。

2.播放进度,剩余时间,音量调节

播放进度的话是根据在播放器onPlayerTimeupdate()回调方法中,通过currentTime这个方法来获取当前播放的进度时间,单位S,因为这里我使用的是slider,进度都是整数计算,所以这里我需要两个变量存放,一个是整数形式,另一个是格式化好时分秒之后的string形式,用以显示。

[javascript] view plain copy

//时间更新

onPlayerTimeupdate(player){

this.playerCtrl.currentTime=timeUtil.secondToDate(player.currentTime());

this.playerCtrl.currentTimeInt=Math.floor(player.currentTime());

console.log("当前音量",player.volume());

},

定点播放,即用户点击进度条某个地方,即可在这个点进度播放,使用的是slider的

[html] view plain copy

@on-change="progressChange"

这个方法监听slider定点,

[javascript] view plain copy

//进度条被拉动

progressChange(val){

this.player.currentTime(val);

this.playerCtrl.currentTimeInt=val;

this.playerCtrl.currentTime=timeUtil.secondToDate(val);

},

拿到定点的值,然后通过player的currentTime设置跳到定点播放。

音量调节的做法跟播放进度相似:

一开始初始化的时候记得配置

[javascript] view plain copy

muted:false,//开始声音

来开启声音,否则静音状态下调节声音无效。

使用player.volume(val)这个api设置音量,其中val=0,表示声音off,val=1表示声音最大,0.5表示声音设置在half。

四:总

最后在app.vue/需要用到这个播放器的地方 引入自定义播放器组件即可。vue-video-player是大神基于video.js开发的适用于vue.js框架的组件,具有良好兼容性,所以我们在vue中使用这个播放器组件本质还是使用video.js,我们要更多的去了解video.js中的api并使用他。

vue-video-player文档_基于vue-video-player自定义播放器的方法相关推荐

  1. .net vue漂亮登录界面_基于 electron-vue 开发的音乐播放器「实践」

    作者:XiaoTuGou 转发链接:https://github.com/SmallRuralDog 前言 基于 electron-vue 开发的音乐播放器,界面模仿QQ音乐. 技术栈electron ...

  2. viewer vue 文档_vue基于viewer实现的图片查看器

    vue2-viewer vue2-viewer 是一款强大的图像浏览插件,可以实现图像的放大预览,旋转,任意比例放大和缩小等功能 vue2-viewer 是viewer.js vue的实现,效果以及样 ...

  3. chrome vue.js插件文档_常用web研发技术文档,这里都给你准备好了

    研发学习,工作过程中,技术文档是重要的工具之一,但是不少同学使用文档的姿势有点问题,遇到问题就一顿百度,拿着很多不一定对的博客文章翻来翻去还找不到答案,反而浪费了很多时间,我觉得解决日常问题更高效的方 ...

  4. vue 文字上下循环滚动_基于 Vue 无缝滚动组件Vue-Seamless-Scroll

    今天给小伙伴们推荐一款超棒的Vue无缝滚动组件VueSeamlessScroll. vue-seamless-scroll 基于 vue.js 构建的简单实用的无缝滚动组件.满足丰富的配置需求,支持上 ...

  5. 移动端vue实现部门结构功能_基于Vue的组织架构树组件

    由于公司业务需求,需要开发一个展示组织架构的树组件(公司的项目是基于Vue).在GitHub上找了半天,这类组件不多,也没有符合业务需求的组件,所以决定自己造轮子! 分析 既然是树,那么每个节点都应该 ...

  6. 移动端vue实现部门结构功能_基于Vue制作组织架构树组件

    编程之家收集整理的这篇文章主要介绍了基于Vue制作组织架构树组件,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 由于公司业务需求,需要开发一个展示组织架构的树组件(公司的项目是基于Vu ...

  7. vue 移动端头像裁剪_基于vue的移动端图片裁剪压缩处理

    前端时间做Vue项目的时候,要用到图片压缩处理,网上查阅了资料后,发现并不能满足实际的业务需求:于是,自己结合网上的资料写了一个,有兴趣的小伙伴不妨试试~ 废话不多说,先上效果图,无图无真相嘛~ 效果 ...

  8. vue 移动到图片浮动_基于Vue实现拖拽升级(九宫格拖拽)

    前言 在本文中将会用Vue完成九宫格拖拽效果,同时介绍一下网格布局.具体代码以及demo可以点以下超链接进入 效果实例 Demo 简单了解Grid布局(网格布局) 什么是网格布局 CSS网格布局(又称 ...

  9. vue设置输入框输入长度_基于vue的限制输入框可输入字节数的解决方案

    2018年07月11日 基于vue的限制输入框可输入字节数的解决方案 需求:input输入框输入上限4个字节.达到上限则不能继续输入,其中1个英文表示1个字节.1个中文表示2个字节. 看到这个需求,第 ...

最新文章

  1. mysql数据库目标库_修改mysql数据库的库名
  2. Linux network source code
  3. 数据库中日期大小的判断
  4. Runtime知识点整理
  5. Hasor【付诸实践 01】低代码框架 DataQL 聚合查询引擎 SQL执行器报错 Query dialect missing 原因分析及解决(针对GreenPlum数据库)
  6. [openjudge] 2797最短前缀 Trie
  7. Google 正式抛弃 HTTP!
  8. 18. web robot
  9. python判断密码是否正确_菜鸟使用python实现正则检测密码合法性
  10. iOS官方demo下载网站
  11. Prometheus metric
  12. 无穷小进课堂,历史在召唤
  13. 你也遇到JSONException:create instance error, null...问题啦?
  14. 有效运用 Color mask 和开发 Automation material - PART 1
  15. android RemoteViews解析
  16. Python处理PDF——PyMuPDF的安装与使用(1)
  17. MetaFormer-3
  18. 译《The Part-Time Parliament》——终于读懂了Paxos协议!
  19. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第七章 阴影 Shadows
  20. 大学模电实验合集丨实验六 比例求和运算电路

热门文章

  1. 基础博弈论(巴什博奕、斐波那契博弈、威佐夫博奕、尼姆博奕)
  2. java循环拼接byte数组,Java 分割、合并byte数组
  3. php 文件 byte数组,php实现java的byte数组转换
  4. iOS swift5 图片压缩 UIImage
  5. JavaScript数组转化为字符串,连接、截取、删除字符串
  6. Yield Guild Games 收购 Genesis NFT Eggs 并登陆农场模拟游戏 Crypto Unicorns
  7. layui时间控件 laydate 重置失效
  8. windows11安装安卓
  9. 小镇做题家的焦虑人生
  10. 2021年六一儿童节,有哪些想送给孩子们的祝福?