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

news2024/10/4 14:23:26

由于开发需要,作者封装了一个音视频播放进度条的插件,支持 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://www.coloradmin.cn/o/1468696.html

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

相关文章

zemax冉斯登目镜

两个焦距相等的平凸透镜组成&#xff0c;两个凸面相对&#xff0c;两者间距等于焦距的2/3 球差、轴向色差、畸变都小于惠更斯目镜 但是垂轴色差较大 可以当作普通放大镜使用 这里没有可以控制两个平凸透镜焦距相等 入瞳直径4mm波长0.51、0.56、0.61半视场15焦距28.2mm 镜头…

基于Java+SSM+Jsp宿舍管理系统(源码+演示视频+包运行成功+Maven版)

您好&#xff0c;我是码农小波&#xff08;wei158888&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 ❤️ 1. 毕业设计专栏&#xff0c;毕业季咱们不慌&#xff0c;上千款毕业设计等你来选。 目录 1、项目背景 2、项目演示 3、使用技术 4、系统设计 …

Dynamo批量将房间名称转换为模型文字

今天呢&#xff0c;我们简单聊聊如何把房间名称&#xff0c;变成模型文字&#xff0c;好在三维中能够看到房间名称。 本来吧&#xff0c;我觉得批量创建模型文字应该是个很简单的事&#xff0c;但是我在Dynamo中搜了下ModelText&#xff0c;发现只有一个在族环境中创建模型文字…

cmake如何将源文件按照指定的组织方式进行分组,在IDE例如vistual stdio或者xcode项目工程文件中展示和管理这些源文件

1、我们先来看下面的一个项目的结构 TestGroup工程下面的main.cpp同级的有两个文件夹&#xff0c;到时候我们想在IDE比如xcode或者visual stdio2019中也显示这样的结构怎么弄呢(答案是用cmake中的source_group函数) 2、假如没有用source_group生成的xcode工程是怎么样的&#…

Phind-70B-运行速度提高4倍的同时,缩小了与GPT-4 Turbo在代码质量上的差距

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

从ChatGPT到Sora,来了解大模型训练中的存储

1 从chatGPT到Sora 2022年底&#xff0c;OpenAI推出人工智能聊天机器人ChatGPT&#xff0c;开启了大模型领域的“竞速跑”模式。2024年2月15日&#xff0c;随着视频生成模型Sora的横空出世&#xff0c;OpenAI再度掀起热潮。 Sora将视频生成内容拉到了一个全新的高度&#xff0c…

推荐几款.NET开发最常用的windowns利器

概述 有很多好用的开发工具&#xff0c;合理的利用能够很大的提升我们日常的开发效率&#xff0c;今天小编就介绍几款我在开发中使用频率较高的windowns工具&#xff0c;希望能对大家用帮助&#xff01; 工具一:Beyond Compare Beyond Compare 是一款专业的文件对比工具&#x…

如何开发自己的npm包并上传到npm官网可以下载

目录 搭建文件结构 开始编写 发布到npm 如何下载我们发布的npm包 搭建文件结构 先创建新文件夹,按照下面的样子布局 .├── README.md //说明文档 ├── index.js //主入口 ├── lib //功能文件 └── tests //测试用例 然后再此根目录下初始化package包 npm init…

js设计模式:模板方法模式

作用: 父类定义一个整体的模板框架,将具体的方法行为定义到子类中。 模板方法主要是封装行为中的固定部分,同时允许子类对方法进行扩展 示例: //moba游戏原型设计方案class MobaGame{loadAssets(){return{heroList:this.heroList(),equipmentList:this.equipmentList(),maps…

vivado VHDL Support

介绍 本章介绍AMD Vivado™合成和 注意支持的任何例外情况。VHDL紧凑地描述了复杂的逻辑&#xff0c;并允许您&#xff1a; •描述系统的结构&#xff1a;如何将系统分解为子系统&#xff0c;以及如何这些子系统是相互连接的。 •使用熟悉的语言形式指定系统的功能。 •在…

尚金干燥邀您参观2024第12届参观生物发酵展

参展企业介绍 江苏尚金干燥科技有限公司座落于江苏常州工业重镇一郑陆镇&#xff0c;东靠沪宁高速公路横山道口及江阴长江公路仅6公里&#xff0c;西距常州火车站18公里&#xff0c;常州奔牛国际机场30公里&#xff0c;交通十分便利。江苏尚金干燥科技有限公司是一家致力于国内…

抖音视频抓取软件的优势|视频评论内容提取器|批量视频下载

抖音视频抓取软件在市场上的优势明显&#xff1a; 功能强大&#xff1a;我们的软件支持关键词搜索抓取和分享链接单一视频提取两种方式&#xff0c;满足用户不同的需求。同时&#xff0c;支持批量处理数据&#xff0c;提高用户获取视频的效率。 操作简单&#xff1a;我们的软件…

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2.解压安装包 防止后面单个系列解压操作&#xff0c;我这边就直接将所有的要用的全部给解压&#xff0c;如下图注…

深入探究Python多进程编程:Multiprocessing模块基础与实战【第98篇—Multiprocessing模块】

深入探究Python多进程编程&#xff1a;Multiprocessing模块基础与实战 在Python编程中&#xff0c;多进程处理是一项关键的技术&#xff0c;特别是在需要处理大规模数据或执行耗时任务时。为了充分利用多核处理器的优势&#xff0c;Python提供了multiprocessing模块&#xff0…

echarts series中的data属性添加动态数据后不显示问题,一处儿异步细节问题

当从后端获取到数据后&#xff0c;发现饼图并没有顺利加载数据出来&#xff0c;使用console.log()测试先后执行顺序&#xff0c;会发现饼图的方法会比请求先执行 此时就可以把饼图的方法放入到请求执行结束后 以下为修改前&#xff1a; 修改后&#xff1a; 一处儿异步的细节问…

WPF真入门教程29--MVVM常用框架之MvvmLight

1、MVVM模式回顾 关于mvvm模式的基础知识&#xff0c;请看这2个文章&#xff1a; WPF真入门教程23--MVVM简单介绍 WPF真入门教程24--MVVM模式Command命令 做过VUE开发或微信小程序开发的伙伴&#xff0c;就知道MVVM模式&#xff0c;核心就是数据驱动控件&#xff0c;全栈开…

java集合--List集合的基本用法

一、ArrayList集合 1.ArrayList集合的特点 2.ArrayList集合的一些方法 ①.add(Object element) 向列表的尾部添加指定的元素。 ②.size() 返回列表中的元素个数。 ③.get(int index) 返回列表中指定位置的元素&#xff0c;index从0开始。 public class Test {public static …

【NTN 卫星通信】基于NTN和TN的Inter-PLMN海事应用场景

1 场景概述 NTN和TN联合组网的场景&#xff0c;可以有多种应用方式&#xff0c;以下用例描述了同时使用多个卫星PLMN和一个地面5G PLMN的海事场景。 MNO-G是一家成熟的卫星PLMN运营商&#xff0c;运营着几颗GEO卫星。MNO-L是一个相对较新的卫星PLMN运营商&#xff0c;操作LEO卫…

【解决(几乎)任何机器学习问题】:特征选择

当你创建了成千上万个特征后&#xff0c;就该从中挑选出⼏个了。但是&#xff0c;我们绝不应该创建成百上千个⽆⽤的特征。特征过多会带来⼀个众所周知的问题&#xff0c;即 "维度诅咒"。如果你有很多特征&#xff0c;你也必须有很多训练样本来捕捉所有特征。什么是 …

Guitar Pro8.2吉他乐谱软件功能测评评价

Guitar Pro 8.2吉他乐谱软件全面评价 Guitar Pro 8.2作为一款吉他乐谱软件&#xff0c;已经得到了广大吉他手和音乐制作人的认可。作为软件评价专家&#xff0c;我对这款软件进行了全面的体验和分析&#xff0c;以下是我在易用性、功能丰富性、用户界面设计、稳定性以及性价比…