更新记录

1.0.6(2023-12-03)

增加倍速播放功能

1.0.5(2023-11-24)

  1. 增加选集功能
  2. 更改分辨率切换逻辑与选集一致,更有利于自定义切换分辨率和选集

1.0.4(2023-11-21)

  1. 增加多分辨率视频播放功能
  2. 将视频播放控制条单独封装为组件
查看更多

平台兼容性

Vue2 Vue3
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,是否全屏
@Ratio Function 切换分辨率时的回调,返回当前分辨率对象
@Epi 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"
            @Ratio="handleChangeRatio"
            @Epi="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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问