只需要一个vid!!把视频上传到腾讯视频之后得到vid!!就可以在自己的小程序上播放视频了!!流畅到爆!!
// 在你们的wxml上这样插入视频元素
<tx-video vid="e0354z3cqjp" playerid="txv1"></tx-video>
本github仓库就是一个示例项目
首先,参见微信官方的插件使用文档申请插件权限,在申请使用插件的使用时,填写以下appid:wxa75efa648b60994b
参见官方文档与示例项目,尽量使用最新版本插件,如在使用的过程中遇到问题,可在微信开发社区下查找或者到github提交issues
wxml
<txv-video
vid="e0354z3cqjp" // 可使用vid="{{vid}}"的方式应用data变量
playerid="txv1"
autoplay="{{true}}" // 是否自动播放
></txv-video>
// 支持slot,用于在video上显示UI
<txv-video
vid="e0354z3cqjp" // 可使用vid="{{vid}}"的方式应用data变量
playerid="txv1"
width="{{100%}}" //自定义宽度
height="{{'auto'}}" // 自定义高度
autoplay="{{true}}"> // 是否自动播放
<cover-view class='txv-video-slot'>video slot</cover-view>
</txv-video>
组件元素支持的属性(最新版本基本上小程序的video属性都支持):
vid
视频idplayerid
播放器标识符,需全局唯一,用于获取Video Context,进而手动控制播放width
视频宽度height
视频高度autoplay
是否自动播放usePoster
是否使用海报图poster
视频海报,会根据视频vid拿一个默认值direction
视频全屏时方向objectFit
视频填充方式controls
视频播放控件showCenterPlayBtn
是否显示中间播放按钮isHiddenStop
是否在不可见区域自动停止播放,默认false,即滑到不可见区域不停止播放isNeedMutex
是否互斥播放,默认true,即播放一个视频另一个播放的视频自动被暂停
/* V1.2.4 */
enableDanmu
是否允许弹幕,默认falsedanmuBtn
是否显示弹幕button,默认falsedanmuList
弹幕数据列表,具体数据格式请看小程序官网video组件
组件元素支持的事件(最新版本基本上小程序的video事件都支持):
bindplay
播放bindpause
暂停bindended
播放结束bindfullscreenchange
全屏bindtimeupdate
播放进度更新事件binderror
视频播放错误信息bindstatechange
播放状态变更事件,包含loading, ready, playing, end, error,回调函数接受两个参数newstate,oldstate
/* V1.2.4 */
sendDanmu
发送弹幕,具体数据格式请看小程序官网video组件hideVideo
隐藏视频插件里面的播放器showVideo
显示视频插件里面的播放器(隐藏后再显示目前有些机型会导致不能播放,已经在解决中)showContainer
显示视频插件里面的最外层容器hideContainer
隐藏视频插件里面的最外层容器
const TxvContext = requirePlugin("tencentvideo");
let txvContext = TxvContext.getTxvContext('txv1') // txv1即播放器组件的playerid值
txvContext.play(); // 播放
txvContext.pause(); // 暂停
txvContext.requestFullScreen(); // 进入全屏
txvContext.exitFullScreen(); // 退出全屏
txvContext.playbackRate(+e.currentTarget.dataset.rate); // 设置播放速率
txvContext.seek(time); //快进到某个时间
//获取当前播放视频上下文
var currPlayerId=TxvContext.getLastPlayId(); //获取当前播放视频的playerid
var currPlayerContxt=TxvContext.getTxvContext(currPlayerId) //获取当前播放视频的上下文,可进行play,pause等操作
//开启和关闭播放器日志,默认关闭
TxvContext.openLog() //开启
TxvContext.closeLog() //关闭
- 全局只播放一个视频,并且视频滑出可见区域自动停止播放
- 支持slot,由于原生video组件层级限制,slot内容推荐用cover-view
- 支持竖屏,海报
- 支持广告暂停和全屏
-
找不到playerid为txv1的txv-video组件 要注意在小程序根目录
app.json
里声明对组件的依赖,在页面的json里声明对插件的使用。详见ps://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html)与示例项目 -
常见视频播放错误 (1)播放器提示 : 播放出错(P.0) 是捕获到video的binderror事件,大概率是网络断了 (2)播放器提示 : 啊哦, 表示获取数据失败,提示的数字是返回的错误码
- playerid可以设置为vid
- 想实现点击视频任何区域,实现视频全屏,经测试发现ios下,部分机型不能正常捕获到video或者容器的tap事件,推荐视频区域不要用video,假写成一张图片和一个播放按钮,点击的时候全屏播放视频
- const TxvContext = requirePlugin("tencentvideo");可以打印TxvContext,插件暴露的接口都在这里面