更新记录

2.0.0(2024-09-22) 下载此版本

重构代码,使用了composition-api修复解决个别情况下样式出现错乱问题

1.2.1(2024-08-06) 下载此版本

修复 多个视频同一页面首次点击会同步播放问题

1.2.0(2024-03-16) 下载此版本

新增自动跳转到历史位置及提示

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.0 app-vue app-nvue × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × ×

sunny-video视频倍速播放器

组件名:sunny-video

平台差异说明

  • 目前已应用到APP(安卓、iOS)、微信(小程序、H5)
  • 其它平台未测试

安装方式

  • 本组件符合easycom规范,HBuilderX 2.5.5起,只需将本组件导入项目,在页面template中即可直接使用,无需在页面中import和注册components
  • uni-app插件市场链接 —— https://ext.dcloud.net.cn/plugin?id=11982

基本用法

  • APP端需要配置manifest.json>App模块配置勾选VideoPlay(视频播放)
  • App端:3.6.14 以及 手机系统 iOS16 以上video全屏 需要配置应用支持横屏: 在manifest.json 文件内 app-plus 节点下新增 screenOrientation 配置,设置值为["portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"]。如下:
    "app-plus" : {
    "screenOrientation" : [
         "portrait-primary",
         "portrait-secondary",
         "landscape-primary",
         "landscape-secondary"
    ]
    }

    vue2使用必看

  • 2.0.0开始,本组件使用composition-api, 如果你希望在vue2中使用,需要在main.js中的vue2部分中添加如下关键代码块
    // vue2
    import Vue from 'vue'
    import VueCompositionAPI from '@vue/composition-api'
    Vue.use(VueCompositionAPI)
  • 更多说明请查看官方教程vue-composition-api

如果你未遇到编译错误,可以忽略下段内容

  • 2.0.0开始,本组件用到了TypeScript你可遇到出现编译错误,如下:
    File was processed with these loaders:
    *./node modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js
    You may need an additional loader to handle the result of these loaders.
    import VideoProps from./props"
    import {getPx, addunit.convertsecondsToHMs} from'./utils
    import type {stateData,rateListData }from './type'
  • 可以尝试如下解决办法:
    1. 如果你是cli项目,尝试安装@vue/cli-plugin-typescripttypescript,执行npm install typescript @vue/cli-plugin-typescriptyarn add typescript @vue/cli-plugin-typescript,同时在根目录创建tsconfig.json,并进行个性化配置,查看推荐配置: 更多说明请查看官方教程TypeScript 支持
    2. cli项目,请更新HBuilder X,或者官方的TS版本过低导致的问题请到\HBuilderX\plugins\compile-typescript目录下,执行npm install typescript -Dyarn add typescript -D

代码演示

<template>
    <view>
        <sunny-video 
            ref="sunnyVideoRef" 
            title="测试视频" 
            src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/2minute-demo.mp4" 
            poster="https://ask.dcloud.net.cn/static/images/side/ask_right_unicloud_class.jpg"
            :trialTime="20"
            :seekTime="5"
            @timeupdate="timeupdate" 
        />
    </view>
</template>

<script>
    export default {
        data() {
            return {
            }
        },
        methods: {
            timeupdate(e){
            }
        }
    }
</script>

<style>
</style>

Props

属性名 类型 默认值 可选值 说明
src String '' - 视频播放地址
loop 1.1.3 Boolean false true 是否循环播放
muted 1.1.3 Boolean false true 是否静音播放
autoplay Boolean false true 是否自动播放
title String '' - 视频标题
poster String '' - 视频封面
videoHeight String, Number 230px - 视频高度
videoWidth 1.1.3 String, Number 750rpx - 视频宽度
playImgHeight String, Number 70rpx - 播放图标按钮宽高
playImg String base64 - 播放按钮图标
showMuteBtn Boolean false true 是否显示静音按钮
isExitFullScreen Boolean true false 播放完毕是否退出全屏
tipText 1.1.0 String '试看已结束,本片是会员专享内容' - 试看提示的文字
btnText 1.1.0 String '成为会员免费观看' - 试看按钮的文字
trialTime 1.1.0 Number 0 - 视频试看时间(秒), 不需要试看功能则默认为0
speedBoxWidth 1.1.3 String, Number 160rpx - 倍速盒子宽度
seekTime 1.2.0 Number 0 - 跳转到历史观看位置(秒), 不需要则默认为0,注:H5为被动
videoId 1.2.1 String sunnyVideo - 视频唯一ID
objectFit 2.0.0 String contain - 当视频大小与 video 容器大小不一致时,视频的表现形式。contain:包含,fill:填充,cover:覆盖

事件 Events

事件名 说明 返回值
play 监听开始播放 -
pause 监听视频暂停 -
playError 视频播放出错时触发 -
videoEnded 视频播放结束触发 -
timeupdate 播放进度变化时触发 event.detail={currentTime, duration}。触发频率 250ms 一次
fullscreenchange 1.1.3 当视频进入和退出全屏时触发 event={fullScreen, direction},direction取为vertical或horizontal
handleBtn 1.1.0 点击试看按钮时触发 -
trialEnd 1.1.0 试看结束时触发 -
changeSeek 1.1.7 视频跳转到指定位置时触发 event= 播放位置单位 s

方法 Methods

  • 需要通过ref获取组件才能调用
名称 参数 说明 差异
changePlay 开始播放视频 -
changePause 1.1.3 暂停播放视频 -
showTrialEnd 1.1.0 控制试看模块显示 -
closeTrialEnd 1.1.0 控制试看模块隐藏 -
seek 1.1.1 position 跳转到指定位置,单位 s -
requestFullScreen 1.1.8 进入全屏 -
exitFullScreen 1.1.8 退出全屏 -
showStatusBar 1.1.8 显示状态栏,仅在iOS全屏下有效 微信小程序、百度小程序、QQ小程序
hideStatusBar 1.1.8 隐藏状态栏,仅在iOS全屏下有效 微信小程序、百度小程序、QQ小程序
handelStop 1.1.8 停止视频 微信小程序

注意事项

  • APP全屏需要按照文档基本用法进行配置,
  • APP端如果需要全屏倍速及试看,需要使用.nvue文件
  • vue2项目中使用,需要按照文档vue2使用必看进行配置
  • 问题反馈交流群:122150481
  • 如果你遇到编译失败的错误,请查看vue2使用必看尝试解决

隐私、权限声明

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

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

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

许可协议

MIT协议

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