更新记录
1.0.7(2024-08-09)
下载此版本
fix:更改静态资源文件的路径,修复微信小程序中图片不显示问题
1.0.6(2023-12-03)
下载此版本
增加倍速播放功能
1.0.5(2023-11-24)
下载此版本
- 增加选集功能
- 更改分辨率切换逻辑与选集一致,更有利于自定义切换分辨率和选集
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.2.6 |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
√ |
× |
√ |
√ |
√ |
xt-video一款简单好用的视频播放器组件
简介
当前仅支持H5版本,后续会不断更新迭代。如果有什么需求,可在评论区留言。发布该版本主要是为了公司项目使用。
基本用法
<template>
<view class="index">
<xt-video
video-id="video"
src="xxx"
poster="xxx"
/>
</view>
</template>
props
属性名 |
类型 |
默认值 |
说明 |
videoId |
String |
|
必填,视频唯一id |
width |
String |
100% |
视频宽度,默认100% |
height |
String |
400rpx |
视频高度,默认422rpx |
src |
String |
|
视频播放地址 |
poster |
String |
|
视频封面 |
autoplay |
Boolean |
false |
是否自动播放,默认false,由于浏览器限制,如果想要自动播放时,muted也要设置为true |
loop |
Boolean |
false |
是否循环播放视频 |
muted |
Boolean |
false |
是否静音播放 |
initialTime |
Number |
0 |
指定视频初始播放位置,单位秒(s) |
duration |
Number |
|
指定视频总时长,单位秒(s) |
activeColor |
String |
#03A3F8 |
进度条选中颜色 |
title |
String |
|
视频标题 |
customFullscreen |
Boolean |
false |
是否自定义视频全屏功能 |
ratios |
Array |
[] |
多分辨率视频播放数组,对象数组内容详见下方 |
ratioDefaultId |
[String, Number] |
null |
设置默认播放的分辨率id,如果设置了该属性,则src属性必须为对应分辨率id的视频地址 |
episodes |
Array |
null |
选集数组,对象数组内容详见下方 |
epiDefaultId |
[String, Number] |
null |
设置默认播放第几集,在设置默认播放src时,也需要设置默认播放第几集的id |
vipBgColor |
String |
#FF5345 |
设置集数时,vip标签的背景色 |
vipFontColor |
String |
#FFFFFF |
设置集数时,vip标签的文字颜色 |
navHeight |
Number |
44,单位px |
上导航的高度,用于视频全屏时,如果存在导航栏,导致选集弹框展示不全问题 |
showSpeed |
Boolean |
false |
是否显示倍速播放按钮 |
speeds |
Array |
具体数组见下方 |
设置倍速播放,支持的倍率有 0.5/0.8/1.0/1.25/1.5。微信基础库2.6.3 起支持 2.0 倍速 |
属性speeds数组的默认值
[
{ rate: 0.5, name: '0.5x' },
{ rate: 0.8, name: '0.8x' },
{ rate: 1.0, name: '1.0x' },
{ rate: 1.25, name: '1.25x' },
{ rate: 1.5, name: '1.5x' },
{ rate: 2.0, name: '2.0x' }
]
属性ratios为一个对象数组,其有效值如下:
属性名 |
类型 |
默认值 |
说明 |
id |
[String, Number] |
|
必填,分辨率的唯一id |
url |
String |
|
不同分辨率的视频地址 |
name |
String |
|
必填,分辨率名称,例如:标清 |
属性episodes为一个对象数组,其有效值如下:
属性名 |
类型 |
默认值 |
说明 |
id |
[String, Number] |
|
必填,集数的唯一id |
url |
String |
|
不同集数的视频地址 |
name |
String |
|
必填,集数名称,例如:1/第一集等 |
isVip |
String |
|
是否是vip |
注意:
分辨率和集数的url都不是必填项,根据你们后端提供的视频地址来自己确定即可。有可能需要前端自己拼写不同分辨率,不同集数的视频地址。
事件
事件名 |
类型 |
说明 |
@onFullscreen |
Function |
customFullscreen为true时生效,自定义全屏事件,返回Boolean,是否全屏 |
@onExitFullscreen |
Function |
customFullscreen为true时生效,自定义退出全屏事件,返回Boolean,是否全屏 |
@onChangeRatio |
Function |
切换分辨率时的回调,返回当前分辨率对象 |
@onChangeEpi |
Function |
切换集数时的回调,返回当前第几集对象 |
方法,通过$refs进行调用
方法名 |
说明 |
参数 |
xtVideoReload |
改变视频地址后,重新加载视频 |
接收一个对象,对象属性{url: String,要切换的视频地址, startTime: Number,视频播放的初始时间}均为非必填 |
示例代码:
<template>
<view class="index">
<xt-video
ref="xtVideoRef"
video-id="video"
src="xxx"
poster="xxx"
:episodes="episodes"
:ratios="ratios"
@onChangeRatio="handleChangeRatio"
@onChangeEpi="handleChangeEpi"
/>
</view>
</template>
<script>
export default {
data() {
return {
ratios: [
{
id: '480p',
url: 'xxx.mp4',
name: '标清'
},
{
id: '720p',
url: 'xxx1.mp4',
name: '高清'
},
{
id: '1080p',
url: 'xxx2.mp4',
name: '超清'
}
],
episodes: [
{
id: '1',
url: 'xxx.mp4',
name: '1',
isVip: false
},
{
id: '2',
url: 'xxx.mp4',
name: '2',
isVip: false
},
{
id: '3',
url: 'xxx.mp4',
name: '3',
isVip: true
}
]
},
methods: {
// 自定义切换分辨率方法
handleChangeRatio(item) {
this.$refs.xtVideoRef.xtVideoReload({
url: item.url
})
},
// 自定义切换集数方法
handleChangeEpi(item) {
this.$refs.xtVideoRef.xtVideoReload({
url: item.url,
startTime: 0
})
}
}
}
}
</script>