vue 中实现音视频播放进度条(满足常见开发需求)

由于开发需要,作者封装了一个音视频播放进度条的插件,支持 vue2 及 vue3 ,有需要的朋友可联系作者,下面是对该款插件的介绍。

插件默认样式👇(插件提供了多个配置选项,可根据自身需求进行个性化配置,详情请往下看)

在这里插入图片描述

一、介绍

该款插件可作为音频、视频播放的进度条,用于控制音频、视频的播放(播放进度、暂停开始、播放倍速、自定义刻度 等)。同时,插件提供了多方面的配置选项,使用者可以通过个性化配置来达到自己想要的效果(下面会对配置项进行详解),拓展性极高。

1、用法概述

在播放的过程中插件会返回当前播放的播放信息(如当前播放到的秒(进度)、进度条被拖拽时的回调、进度条拖拽后的回调等),根据这些返回信息,我们拿到后根据实际的需求来做不同处理就可以实现控制播放的效果。

2、模式

插件分为两种模式: 连续播放模式非连续播放模式

❓ 连续和非连续分别表示什么意思呢 ❓

连续与非连续指的是播放是否是连续的。比如我们平时常见的音频、视频的播放是以秒作为单位,逐秒进行播放的,这就是连续播放。而非连续播放出现的情况可能比较少,指的是根据传入插件的数据,有数据的时间节点则进行播放,如果下一个数据的时间节点与当前数据时间节点间隔超过指定秒,则直接跳到下一个有数据的时间节点,若间隔不超过指定秒数则逐秒播放至下一数据时间节点,这样跳着播放的就是非连续播放。(有不懂的可联系作者)

二、使用

接下来对插件的 配置项 以及 能够获取到的进度条信息 进行详细说明:

1、基础配置

1.1、模式(必传)

参数类型默认值描述
typeStringcontinuous上面介绍中说到插件分为连续播放和非连续播放两种模式 (连续播放:continuous,非连续播放:discontinuous )

连续播放演示:

请添加图片描述
非连续播放演示:

请添加图片描述

1.2、是否播放

关于播放倍速有以下两个参数:

参数类型默认值描述
isActivateBooleantrue通过该参数可以控制播放的开始与暂停,初始值赋值为 true 则默认播放

演示(以连续播放为例,非连续播放效果相同):

请添加图片描述

1.3、播放开始的时间(必传)

参数类型默认值描述
scheduleStartTimeNumber0连续播放模式下传入播放开始的秒数,非连续播放模式传入播放开始的毫秒时间戳
//连续播放模式
const scheduleStartTime = 10 //表示从第10秒开始播放//非连续播放模式
const scheduleStartTime = 1679988534000 //1679988534000是一个毫秒时间戳,表示从1679988534000这个时间点开始播放

1.4、播放倍速

关于播放倍速有以下两个参数:

参数类型默认值描述
multipleListArray[64,32,16,8,4,2,1]提供的倍速选项,默认提供默认值中的播放倍速选项
multipleNumber1当前的播放倍速,默认为1倍速

演示(以连续播放为例,非连续播放效果相同):
请添加图片描述

1.5、禁用进度条

参数类型默认值描述
disabledBooleanfalsetrue 禁用,false 启用

演示(以连续播放为例,非连续播放效果相同):
请添加图片描述

1.6、是否显示最左侧当前播放时间文本

参数类型默认值描述
showTimeTextBooleantruetrue 显示,false 隐藏

演示(以连续播放为例,非连续播放效果相同):

在这里插入图片描述

1.7、是否显示播放暂停及启动按钮

参数类型默认值描述
showPlayBtnBooleantruetrue 显示,false 隐藏

演示(以连续播放为例,非连续播放效果相同):

在这里插入图片描述

1.8、是否显示倍速选择器

参数类型默认值描述
showMultipleBooleantruetrue 显示,false 隐藏

演示(以连续播放为例,非连续播放效果相同):

在这里插入图片描述

1.9、是否显示进度条提示

参数类型默认值描述
showTooltipBooleantruetrue 显示,false 隐藏

演示(以连续播放为例,非连续播放效果相同):
在这里插入图片描述

2、样式配置

2.1、进度条中端点样式配置

在这里插入图片描述

参数类型默认值描述
schedulePointConfigObject{width: ‘20px’,height: ‘20px’ }设置端点的样式

可配置的属性有:

属性类型描述例子
widthString宽度15px
heightString高度15px
borderColorString边框颜色red
borderWidthString边框宽度2px
borderRadiusString边框弧度10%
bgColorString背景色red
bgImgUrlString背景图片https://…png

演示(以连续播放为例,非连续播放效果相同):

请添加图片描述

实现上方效果,schedulePointConfig 的配置为(可供参考):

import testImg from './assets/images/test_img.png'const schedulePointConfig = {width: '30px',height: '30px',bgImgUrl: testImg,borderColor: 'transparent',bgColor:'transparent',borderRadius: '0px'
}

2.2、进度条背景色

参数类型默认值描述
progressBarColorString#409eff设置进度条背景色

演示(以连续播放为例,非连续播放效果相同):

在这里插入图片描述

2.3、开始暂停按钮

开始暂停按钮可替换替换图片和设置大小,其它样式未提供配置,如有其他需求可隐藏自带按钮,根据自身需求个性化实现,插件提供控制播放开始及暂停的配置参数。

参数类型默认值描述
activateImgUrlString开始按钮
stopImgUrlString暂停按钮
startStopBtnConfigObject{width: ‘15px’,height: ‘15px’,}样式配置,只提供宽高的配置

注意: 这里的图片并不像上文进度条端点可以使用本地图片,只能使用线上地址图片。

演示(以连续播放为例,非连续播放效果相同):

请添加图片描述

2.4、进度条提示框出现位置

参数类型默认值描述
placementStringtop(vue2版本不能使用) 可选值有:‘top’ / ‘top-start’ / ‘top-end’ / ‘bottom’ / ‘bottom-start’ / ‘bottom-end’ / ‘left’ / ‘left-start’ / ‘left-end’

演示(以连续播放为例,非连续播放效果相同):

在这里插入图片描述

2.5、插件背景色

参数类型默认值描述
scheduleBgColorStringtransparent设置插件背景色

演示(以连续播放为例,非连续播放效果相同):

在这里插入图片描述

3、特殊配置

特殊配置指的是区分模式的一些配置。

3.1、连续播放模式:

3.1.1、播放总时长(必传)
参数类型默认值描述
maxNumber0(单位:秒)连续播放模式下播放的总时长

3.2、非连续播放模式

3.2.1、播放数据(必传)
参数类型默认值描述
dataListArray[]非连续播放的播放数据 (传入数据时间必须从小到大进行排序)

数据格式为:

let dataList = [{loc:{time: 1679981334000},alarm:{text:'我是标识1',style:{'color': 'red'}}},{loc:{time: 1679988534000},},{loc:{time: 1679992134000},alarm:{text:'我是标识2',style:{'color': 'red'}}},{loc:{time: 1679995734000},},{loc:{time: 1679998434000},},
]

结构说明: dataList 中的每一个元素表示一个有数据的时间节点,在播放的过程中会对这些点进行播放,两点间的时间间隔如果超过指定的跨度时间(跨度时间配置说明在下方 3.2.3 )则直接跳到下一个节点进行播放,如果不超过跨度时间则逐秒播放到下一个时间节点。loc 中的 time 属性就是该数据所处时间,而 alarm 表示该事件节点是否需要进行标注,存在 alarm 属性的节点会在进度条中进行标注。alarm 中的 text 表示标注的文本,通过 style 中的属性可以配置 text 文本的样式。

演示(该演示所使用数据就是上方的数据格式中的数据):

请添加图片描述

3.2.2、进度条的开始及结束时间(必传)
参数类型描述
startTimestampNumber(毫秒时间戳,如:1679980393000)进度条开始时间
endTimestampNumber(毫秒时间戳,如:1679998698000)进度条结束时间

演示:在这里插入图片描述

3.2.3、跨度时间
参数类型默认值描述
spanTimeNumber30(单位:秒)两个节点如果间隔时间超过该跨度时间则直接跳转到下一节点,如果不大于该跨度时间则逐秒播放到下一个时间节点
3.2.4、进度条中的标识样式
参数类型默认值描述
marksConfigObject{color: ‘#e8405e’, width: ‘3px’}width:宽度(String),color:颜色(String)

演示:
在这里插入图片描述

3.2.5、是否显示刻度
参数类型默认值描述
showScaleBooleanfalsetrue:显示,false:隐藏

演示:
请添加图片描述

3.2.5、刻度间隔时间
参数类型默认值描述
scaleIntervalTimeNumber30(单位:分钟)刻度的间隔时间
3.2.6、时间格式(左侧提示时间、刻度时间、进度条提示时间)

在这里插入图片描述

参数类型默认值描述
timeTipFormatStringh:m设置左侧时间的格式
scaleTextFormatStringh:m设置刻度时间的格式
tooltipFormatStringh:m设置进度条提示时间的格式

能够设置的时间格式有(Y:年,M:月,D:日,h:时,m:分,s:秒):

h:m | Y-M-D h:m:s | M-D h:m:s | M-D h:m | Y-M-D | 
Y/M/D h:m:s | M/D h:m:s | M/D h:m | Y/M/D | h:m:s 

4、传出的进度条数据

插件中传出的数据及钩子函数,通过传出的数据可以对外部的音视频播放进行控制。通过传出的钩子函数可以在相应的时机做自身需要的处理。

4.1、进度条当前播放进度的时间

函数参数描述
getCurrentProgressnowTime(当前的进度时间,连续播放模式下返回进度的秒,非连续播放模式下返回进度的毫秒时间戳函数用户获取当前的播放进度

演示:

  • 连续播放模式:
    在这里插入图片描述
  • 非连续播放模式:
    在这里插入图片描述

4.2、拖动进度条时触发的回调

函数参数描述
afterInputvalue(Number类型,当前拖动到的进度)拖拽时触发

4.3、拖动进度条后触发的回调

函数参数描述
afterChangevalue(Number类型,当前拖动到的进度)拖拽后或者点击进度条某个点时触发

5、配置参数总结

基础配置

参数类型默认值描述是否必传
typeStringcontinuous上面介绍中说到插件分为连续播放和非连续播放两种模式(连续播放:continuous,非连续播放:discontinuous )
isActivateBooleantrue通过该参数可以控制播放的开始与暂停,初始值赋值为 true 则默认播放
scheduleStartTimeNumber0连续播放模式下传入播放开始的秒数,非连续播放模式传入播放开始的毫秒时间戳
multipleListArray[64,32,16,8,4,2,1]提供的倍速选项,默认提供默认值中的播放倍速选项
multipleNumber1当前的播放倍速,默认为1倍速
disabledBooleanfalsetrue 禁用,false 启用
showTimeTextBooleantruetrue 显示,false 隐藏
showPlayBtnBooleantruetrue 显示,false 隐藏
showMultipleBooleantruetrue 显示,false 隐藏
showTooltipBooleantruetrue 显示,false 隐藏

样式配置

参数类型默认值描述是否必传
schedulePointConfigObject{width: ‘20px’,height: ‘20px’ }设置端点的样式
progressBarColorString#409eff设置进度条背景色
activateImgUrlString开始按钮
stopImgUrlString暂停按钮
startStopBtnConfigObject{width: ‘15px’,height: ‘15px’,}设置开始暂停按钮样式
placementStringtop设置进度条提示的出现位置
scheduleBgColorStringtransparent设置插件背景色

特殊配置

连续播放模式:
参数类型默认值描述是否必传
maxNumber0(单位:秒)连续播放模式下播放的总时长
非连续播放模式:
参数类型默认值描述是否必传
dataListArray[]非连续播放的播放数据 (传入数据时间必须从小到大进行排序)
startTimestampNumber(毫秒时间戳,如:1679980393000)进度条开始时间
endTimestampNumber(毫秒时间戳,如:1679998698000)进度条结束时间
spanTimeNumber30(单位:秒)跨度时间
marksConfigObject{color: ‘#e8405e’, width: ‘3px’}设置进度条中标注样式
showScaleBooleanfalse是否显示刻度
scaleIntervalTimeNumber30(单位:分钟)刻度的间隔时间
timeTipFormatStringh:m设置左侧时间的格式
scaleTextFormatStringh:m设置刻度时间的格式
tooltipFormatStringh:m设置进度条提示时间的格式

插件传出数据

函数参数描述
getCurrentProgressnowTime(当前的进度时间,连续播放模式下返回进度的秒,非连续播放模式下返回进度的毫秒时间戳)函数用户获取当前的播放进度
afterInputvalue(Number类型,当前拖动到的进度)拖拽时触发
afterChangevalue(Number类型,当前拖动到的进度)拖拽后或者点击进度条某个点时触发

6、用法示例

<ProgressBar :type="discontinuous":isActivate="isActivate" @getCurrentProgress=getCurrentProgress...
></ProgressBar>

三、总结

插件包含了日常常见的进度条需求,基本能满足大部分进度条的使用环境。感兴趣的朋友可以联系作者获取插件。如有其他功能插件中未实现的,欢迎留言,感谢!

👇觉得有帮助的朋友可以支持下作者哦,您的鼓励是我创作的最大动力,如有开发问题可联系作者
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2805855.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AI误导游戏——LLM的危险幻觉

在当今科技高速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为日常生活和工作中不可或缺的一部分。特别是大语言模型&#xff08;LLM&#xff09;如GPT-4等&#xff0c;它们的智能表现令人惊叹&#xff0c;广泛应用于文本生成、语言翻译、情感分析等多个领域…

5分钟JavaScript快速入门

目录 一.JavaScript基础语法 二.JavaScript的引入方式 三.JavaScript中的数组 四.BOM对象集合 五.DOM对象集合 六.事件监听 使用addEventListener()方法添加事件监听器 使用onX属性直接指定事件处理函数 使用removeEventListener()方法移除事件监听器 一.JavaScript基础…

HL祭记汇

一.写在前面 如果说廿四10天集训&#xff0c;对于我&#xff0c;是完成了从入门&#xff08;虽然可能我比别人入门更早&#xff1f;&#xff09;到准OIer的蜕变&#xff0c;那么&#xff0c;HL7天&#xff0c;可以说是真正成为了OIer&#xff0c;虽然是被小学生、初中生&#…

Linux运维-DHCP服务器

DHCP服务器的配置与管理 项目场景 学校各部门共有180台电脑&#xff0c;除了计算机学院的教师会配置电脑的网络连接&#xff0c;其他部门的老师和工作人员均不会&#xff0c;为了提高网络的管理效率&#xff0c;技术人员决定配置一台DHCP服务器&#xff0c;来提供动态的IP地址…

nginx搭建直播rtmp推流,httpflv拉流环境

背景 工作中发现挺多直播CDN在实现httpflv拉流时都没有使用http chunk编码&#xff0c;而是直接使用no-content-length的做法。所以想自己搭建一个直播CDN支持 http chunk编码。 环境搭建 系统环境 Ubuntu 18.04.4 LTS 软件 nginx-1.18.0 nginx扩展模块 nginx-http-flv-mo…

【前端素材】推荐优质后台管理系统Be admin平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

Linux学习方法-框架学习法——Linux驱动架构的演进

配套视频学习链接&#xff1a;https://www.bilibili.com/video/BV1HE411w7by?p4&vd_sourced488bc722b90657aaa06a1e8647eddfc 目录 Linux驱动演进的过程 Linux驱动的原始架构(Linux V2.4) 平台总线架构(platform) Linux设备树 Linux驱动演进的趋势 Linux驱动演进的过程…

这么多向量数据库,它们之间到底有哪些差异?

上篇说到chroma的近邻搜索算法实现得有问题&#xff0c;不如qdrant的。其实向量数据库之间看似都一样&#xff0c;但细细比较还是有很多不同的。 国外有一系列文章已经讲得很详细了&#xff0c;而且也就是半年前写的&#xff0c;还是具有很强的参考价值&#xff0c;文章如下&a…

最佳 PDF 转 Word 转换器软件,可实现无缝转换

如今&#xff0c;PDF文件格式因其高安全性而被计算机用户所熟悉&#xff0c;这使得无法直接编辑内容。因此&#xff0c;每当用户需要复制内容时&#xff0c;都会遇到很多困难。在这里将介绍了一些可以让您将 PDF 转换为 Word 的工具。 借助高效、免费的 PDF 转 Word 转换器软件…

c语言的数据结构:找环状链表入口处

一起<(&#xffe3;︶&#xffe3;)↗[GO!] 1.如何判断一个链表是否有环 思路:设定两个快慢指针fast和slow,fast每次走两个结点,slow每次走一个节点 如果fast指针遇到了Null,那么这个链表没有环,如果fast和slow可以相遇,则代表这个链表有环 代码如下 N:fast先进环,slow后…

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(二)

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(二) 大家好 我是寸铁&#x1f44a; 金三银四&#xff0c;树、dfs、bfs、回溯、递归是必考的知识点✨ 快跟着寸铁刷起来&#xff01;面试顺利上岸&#x1f44b; 喜欢的小伙伴可以点点关注 &#x1f49d; 上期回顾 感谢大家的支持&am…

Linux运维-Web服务器的配置与管理(PHP)

Web服务器的配置与管理(PHP) 项目场景 某企业在CentOS上搭建Web服务系统&#xff0c;以PHP作为网页开发环境&#xff0c;以MySQL为后台数据库。 基础知识 PHP PHP原始为Personal Home Page的缩写&#xff0c;已经正式更名为 “PHP: Hypertext Preprocessor”&#xff08;超…

第1讲-introduction

计算机组成与结构简介 计算机的基本组成 计算机的层次结构

Spring Boot 手写starter!!!

原因&#xff1a;为什么要手写starter&#xff1f;&#xff1f;&#xff1f; 原因&#xff1a;简化功能。 实例&#xff1a;以分页为例&#xff1a;写一个starter。 1.首先定义一个PageX注解。 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented p…

【计算机毕业设计】541鲜花商城系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

pikachu靶场-RCE

介绍&#xff1a; RCE(remote command/code execute)概述 RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 远程系统命令执行 一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命…

Pytorch 自用 Scheduler 分享

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

TreeData 数据查找

TreeData 数据查找 最近做需求的时候遇到了这样的一个需求&#xff0c;Tree组件数据支持查找&#xff0c;而且TreeData的数据层级是无限级的 开始想的事借助UI组件库&#xff08;Ant-design-vue&#xff09;中的Tree组件的相关方法直接实现,看了下api 发现没法实现&#xff0c;…

【前端素材】推荐优质后台管理系统PORTAL平台模板(附源码)

一、需求分析 后台管理系统是一种具有多层次结构的软件系统&#xff0c;用于管理网站、应用程序或系统的后台操作和管理。下面是对后台管理系统的分层次、详细分析&#xff1a; 第一层&#xff1a;用户界面层 登录界面&#xff1a;提供用户登录验证&#xff0c;确保只有经过授…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(三)

文章目录 往期效果将文章信息导出适配 hexo 的文章模板导出的文章路径问题终端控制执行脚本代码整理结尾 往期 Puppeteer 使用实战&#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客&#xff08;二&#xff09; 效果 写了一个 node 脚本用来批量处理 md 文件 本期…