更新记录
0.0.1(2024-12-13)
初版发布
平台兼容性
Vue2 | Vue3 |
---|---|
× | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
app-uvue | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
cx-videoview
本组件以插槽的方式预留了一定的扩展能力,可以在全屏下的右上角、左下角、右下角添加组件以满足更多场景的功能需要
注意
1、基于官方video组件封装的,所以打包时注意video模块是否在内
2、iOS设备暂时未测试
3、弹幕功能由于官方组件本身的弹幕功能以及提供的API有限,UI上暂未提供弹幕功能,但仍可以在组件设置中使用
4、此组件为本人项目所用,功能并不一定符合所有场景,购买前请谨慎考虑
5、还有更多的功能等待后续慢慢完善
属性
名称 | 类型 | 描述 |
---|---|---|
srcList | Array | 格式:[{"title":"","src":""}] |
srcIndex | number | 要播放的视频的srcList下标 |
title | string | 标题前缀,组件上显示为title和集数标题的组合 |
autoPlay | boolean | 自动播放 |
enableDanmu | boolean | 是否展示弹幕,只在初始化时有效,不能动态变更 |
danmuList | Array |
弹幕列表 |
@play | (event: UniEvent) => void | 当开始/继续播放时触发 |
@pause | (event: UniEvent) => void | 当暂停播放时触发 |
@ended | (event: UniEvent) => void | 当播放到视频末尾时触发 |
@timeupdate | (event: UniVideoTimeUpdateEvent) => void | 播放进度变化时触发,event.detail = { currentTime, duration }。触发频率 250ms 一次 |
@fullscreenchange | (event: UniVideoFullScreenChangeEvent) => void | 当视频进入和退出全屏时触发,event.detail = { fullScreen, direction },direction取为 vertical 或 horizontal |
@waiting | (event: UniEvent) => void | 视频出现缓冲时触发 |
@error | (event: UniVideoErrorEvent) => void | 播放出错时触发 |
@progress | (event: UniVideoProgressEvent) => void | 加载进度变化时触发,只支持一段加载。event.detail = { buffered },百分比 |
@fullscreenclick | (event: UniVideoFullScreenClickEvent) => void | 视频全屏播放时点击屏幕触发。event.detail = { screenX, screenY, screenWidth, screenHeight } |
@controlshow | (event: boolean) => void | 切换 controls 显示隐藏时触发 |
@currentplay | (event: number) => void | 切换集数触发 |
!!!注意:当srcList只传入1个视频资源时,播放下一集和选集功能自动隐藏
playVideo()
播放视频
pauseVideo()
暂停视频
stopVideo()
停止视频
seekVideo(position : number)
跳转
sendDanmu(danmu : Danmu)
发送弹幕
playbackRate(rate : number)
倍速
requestFullScreen(direction ?: RequestFullScreenOptions | null)
全屏
exitFullScreen()
退出全屏
!!使用方法举例 : (this.$refs["cx"] as CxVideoComponentPublicInstance).pauseVideo()
以上和官方组件对齐,使用方法相同 官方文档
扩展插槽
top
右上角
bottom-left
左下角
bottom-right
右下角
<cx-videoview class="cxVideo" ref="cx" :srcList='srcList' :srcIndex="0" :title="'video组件'">
<template #top>
<image class="icon-btn" src="../../static/xxx.png" @click.stop=""></image>
<image class="icon-btn" src="../../static/xxx.png" @click.stop=""></image>
</template>
<template #bottom-left>
<image class="icon-btn" src="../../static/xxx.png" @click.stop=""></image>
</template>
<template #bottom-right>
<image class="icon-btn" src="../../static/xxx.png" @click.stop=""></image>
</template>
</cx-videoview>