更新记录
1.0.0(2026-07-08)
下载此版本
- 首次发布。
- 新增
xy-video-player 视频播放器组件。
- 支持标题、封面、尺寸、圆角、阴影、弹幕、全屏、播放控制和常用事件转发。
平台兼容性
uni-app(3.7.13)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
| 微信小程序 |
微信小程序插件版本 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| 1.0.0 |
1.0.0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(3.7.10)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
- |
- |
- |
- |
xy-video-player 视频播放器
xy-video-player 是一个基于 uni-app 原生 <video> 封装的视频播放器组件,适合在 H5、App、小程序中快速接入视频播放能力。组件保留原生 video 的常用能力,并额外提供标题区域、样式配置、事件转发和 ref 方法调用。
安装
插件市场安装
- 在 DCloud 插件市场导入本插件。
- 确认项目中存在
uni_modules/xy-video-player 目录。
- 通过 easycom 直接在页面中使用
<xy-video-player />。
本地安装
将整个 xy-video-player 目录复制到项目的 uni_modules 目录下:
uni_modules
└── xy-video-player
├── components
│ └── xy-video-player
│ └── xy-video-player.vue
├── changelog.md
├── package.json
└── readme.md
基础用法
<template>
<view class="page">
<xy-video-player
ref="videoPlayer"
title="示例视频"
src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/2minute-demo.mp4"
poster="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/poster.png"
height="420rpx"
radius="20rpx"
shadow
@play="onPlay"
@pause="onPause"
@ended=""
@timeupdate=""
@error="onError"
/>
<button @click="play">播放</button>
<button @click="pause">暂停</button>
<button @click="seek">跳转到 10 秒</button>
</view>
</template>
<script>
export default {
methods: {
play() {
this.$refs.videoPlayer.play()
},
pause() {
this.$refs.videoPlayer.pause()
},
seek() {
this.$refs.videoPlayer.seek(10)
},
onPlay(event) {
console.log('开始播放', event)
},
onPause(event) {
console.log('暂停播放', event)
},
(event) {
console.log('播放结束', event)
},
(event) {
console.log('播放进度', event.detail.currentTime)
},
onError(event) {
console.log('播放错误', event)
}
}
}
</script>
插槽
| 名称 |
说明 |
header |
自定义顶部标题区域,传入后会替代 title 默认展示 |
footer |
自定义底部区域,可放简介、按钮或其他操作 |
示例:
<xy-video-player src="视频地址">
<template #header>
<view class="custom-header">课程试看</view>
</template>
<template #footer>
<view class="custom-footer">视频简介内容</view>
</template>
</xy-video-player>
Props
| 属性名 |
类型 |
默认值 |
说明 |
src |
String |
必填 |
视频资源地址 |
poster |
String |
'' |
视频封面图 |
title |
String |
'' |
顶部标题 |
width |
String |
100% |
组件宽度 |
height |
String |
420rpx |
视频高度 |
radius |
String |
16rpx |
圆角大小 |
backgroundColor |
String |
#000000 |
背景色 |
shadow |
Boolean |
false |
是否显示阴影 |
autoplay |
Boolean |
false |
是否自动播放 |
loop |
Boolean |
false |
是否循环播放 |
muted |
Boolean |
false |
是否静音 |
controls |
Boolean |
true |
是否显示默认播放控件 |
initialTime |
Number |
0 |
指定视频初始播放位置,单位秒 |
duration |
Number |
0 |
指定视频时长,单位秒 |
objectFit |
String |
contain |
视频填充模式,可选 contain、fill、cover |
direction |
Number |
-90 |
全屏方向,参考 uni-app video 组件 |
showFullscreenBtn |
Boolean |
true |
是否显示全屏按钮 |
showPlayBtn |
Boolean |
true |
是否显示播放按钮 |
showCenterPlayBtn |
Boolean |
true |
是否显示中间播放按钮 |
enableProgressGesture |
Boolean |
true |
是否开启控制进度手势 |
pageGesture |
Boolean |
false |
非全屏下是否开启亮度、音量调节手势 |
vslideGesture |
Boolean |
false |
是否开启非全屏垂直手势 |
vslideGestureInFullscreen |
Boolean |
true |
是否开启全屏垂直手势 |
playBtnPosition |
String |
bottom |
播放按钮位置,可选 bottom、center |
danmuList |
Array |
[] |
弹幕列表 |
danmuBtn |
Boolean |
false |
是否显示弹幕按钮 |
enableDanmu |
Boolean |
false |
是否展示弹幕 |
showMuteBtn |
Boolean |
false |
是否显示静音按钮 |
showCastingButton |
Boolean |
false |
是否显示投屏按钮,实际支持情况以平台为准 |
Events
组件会透传 uni-app 原生 video 的常用事件:
| 事件名 |
说明 |
play |
开始或继续播放 |
pause |
暂停播放 |
ended |
播放到末尾 |
timeupdate |
播放进度变化 |
fullscreenchange |
进入或退出全屏 |
waiting |
视频缓冲 |
error |
播放错误 |
progress |
加载进度变化 |
loadedmetadata |
元数据加载完成 |
controlstoggle |
控制栏显示状态变化 |
Methods
通过 ref 调用:
| 方法名 |
参数 |
说明 |
play() |
- |
播放视频 |
pause() |
- |
暂停视频 |
stop() |
- |
停止视频 |
seek(position) |
position: number |
跳转到指定秒数 |
requestFullScreen(direction) |
direction?: number |
进入全屏 |
exitFullScreen() |
- |
退出全屏 |
sendDanmu(danmu) |
danmu: object |
发送弹幕 |
playbackRate(rate) |
rate: number |
设置倍速,平台支持情况以 uni-app 为准 |
弹幕示例
<xy-video-player
ref="videoPlayer"
src="视频地址"
:danmu-list="danmuList"
danmu-btn
enable-danmu
/>
export default {
data() {
return {
danmuList: [
{
text: '第一条弹幕',
color: '#ffffff',
time: 1
}
]
}
},
methods: {
sendDanmu() {
this.$refs.videoPlayer.sendDanmu({
text: '新的弹幕',
color: '#ff0000'
})
}
}
}
注意事项
- 组件基于 uni-app 原生
<video>,不同端对部分属性和方法的支持可能不完全一致,请以 uni-app 官方文档和实际运行端为准。
- 小程序端视频地址建议使用 HTTPS,并确认域名已在小程序后台配置合法域名。
- 自动播放在部分浏览器或小程序端可能受系统策略限制,必要时可配合
muted 使用。
- 如果项目关闭了 easycom,需要在页面或组件内手动引入
uni_modules/xy-video-player/components/xy-video-player/xy-video-player.vue。
发布到插件市场
发布前请检查:
package.json 中的 displayName、description、keywords、version 是否符合你的发布信息。
dcloudext.contact.qq 可按需填写插件作者联系方式。
- 在 HBuilderX 中右键
uni_modules/xy-video-player,选择发布到插件市场。