在使用微信小程序的直播组件时,存在这样一种情况,第一次进入当前页面,方法只会触发onReady,但是不会播放直播流,查看日志,也没有触发bindnetstatus方法,但是第二次进入的时候,直播流才会触发,才能播放当前流,该现象不定时出现,烦请官方帮忙查看定位下。
代码如下:
wxml:
<view class=‘flexColumn’>
<text>房间号:{{home}}</text>
<live-player id=“mylive” src="{{url}}" mode=“RTC” autoplay bindstatechange=“statechange” bindfullscreenchange=“fullscreen” binderror=“error” style=“width: 300px; height: 225px;” />
<image style=“width: 40rpx; height: 40rpx;” src="…/…/resources/images/fullscreen.png" bindtap=‘fullscreen’></image>
</view>
js:
// pages/liveplay/liveplay.js
Page({
/**
* 页面的初始数据
*/
data: {
// office wifi ip:192.168.253.2
// home wifi ip 192.168.1.2
url:"",
isFullScreen:false,
//直播间房号
home:"",
},
statechange(e) {
console.log(‘live-player code:’, e.detail.code)
},
fullscreen(){
if (this.data.isFullScreen){
console.log(“quit fullscreent”)
this.data.playerContext.requestFullScreen()
}else{
this.playContext.exitFullScreen();
}
},
/**
* 生命周期函数–监听页面加载
*/
onLoad: function (options) {
console.log(“跳转参数”);
console.log(options);
if(options.home){
this.setData({
home:options.home,
})
}
if (options.url) {
this.setData({
url: options.url,
})
console.log(“当前直播流地址:”+this.data.url)
}
},
/**
* 生命周期函数–监听页面初次渲染完成
*/
onReady: function () {
//achieve live component
this.data.playerContext = wx.createLivePlayerContext(‘mylive’);
this.data.playerContext.play({
success(){
console.log(“播放流成功”)
},
fail(){
console.log(“播放流失败”)
}
});
},
/**
* 生命周期函数–监听页面显示
*/
onShow: function () {
//this.data.playerContext.play();
},
/**
* 生命周期函数–监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数–监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数–监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
var parameters=’?url=’+this.data.url+’&home=’+this.data.home;
return {
title: ‘直播邀请’, // 转发标题(默认:当前小程序名称)
path: ‘/pages/liveplay/liveplay’ + parameters, // 转发路径(当前页面 path ),必须是以 / 开头的完整路径
success(e) {
// shareAppMessage: ok,
// shareTickets 数组,每一项是一个 shareTicket ,对应一个转发对象
// 需要在页面onLoad()事件中实现接口
wx.showShareMenu({
// 要求小程序返回分享目标信息
withShareTicket: true
});
},
fail(e) {
// shareAppMessage:fail cancel
// shareAppMessage:fail(detail message)
},
complete() { }
}
}
})