更新记录
2.0.0(2024-09-22) 下载此版本
重构
代码,使用了composition-api
;修复
解决个别情况下样式出现错乱问题
1.2.1(2024-08-06) 下载此版本
修复
多个视频同一页面首次点击会同步播放问题
1.2.0(2024-03-16) 下载此版本
新增
自动跳转到历史位置及提示
平台兼容性
uni-app
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | - | √ | √ | - | - | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
√ | - | - | - | - | - | - | - | - | - | - |
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'
- 可以尝试如下解决办法:
- 如果你是
cli
项目,尝试安装@vue/cli-plugin-typescript
和typescript
,执行npm install typescript @vue/cli-plugin-typescript
或yarn add typescript @vue/cli-plugin-typescript
,同时在根目录创建tsconfig.json
,并进行个性化配置,查看推荐配置: 更多说明请查看官方教程TypeScript 支持- 非
cli
项目,请更新HBuilder X
,或者官方的TS版本过低导致的问题请到\HBuilderX\plugins\compile-typescript
目录下,执行npm install typescript -D
或yarn 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 |
停止视频 | 微信小程序 |