更新记录

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 方法调用。

安装

插件市场安装

  1. 在 DCloud 插件市场导入本插件。
  2. 确认项目中存在 uni_modules/xy-video-player 目录。
  3. 通过 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 视频填充模式,可选 containfillcover
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 播放按钮位置,可选 bottomcenter
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

发布到插件市场

发布前请检查:

  1. package.json 中的 displayNamedescriptionkeywordsversion 是否符合你的发布信息。
  2. dcloudext.contact.qq 可按需填写插件作者联系方式。
  3. 在 HBuilderX 中右键 uni_modules/xy-video-player,选择发布到插件市场。

隐私、权限声明

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

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

插件不采集任何用户数据

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

许可协议

MIT协议

暂无用户评论。