一、监听加入事件
通过sdk的监听事件,获取新加入房间直播的主播uid以及rtmp的url
并将url和uid存到数组中,存uid的作用是为了当有主播退出时,将渲染的数组中的视频流移除
//监听添加远端流
client.on("stream-added", e => {
console.log("stream--add",e)
let uid=e.uid
client.subscribe(uid,(url,rotation)=> {
Utils.log(`stream url ${url} subscribed successful`);
let t_rtmpUrl=that.data.rtmpUrl
let item={
url:url,
uid:e.uid
}
t_rtmpUrl.push(item)
that.setData({
rtmpUrl:t_rtmpUrl
})
}, e => {
Utils.log(`stream subscribed failed ${e} ${e.code} ${e.reason}`);
});
});
二、监听移除事件
监听移除事件,返回的是uid的数组
//移除远端订阅流
client.on("stream-removed", e => {
let uid = e.uid;
console.log("remove===",e)
Utils.log(`stream ${uid} removed`);
this.removeMedia(uid);
});
传入移除的uid数组,进行删除
removeMedia(uidList){
let that=this
let rtmpUrl=this.data.rtmpUrl
let removeUids=[]
for(let i=0;i
for(let j=0;j
if(uidList[i]==rtmpUrl[j].uid){
removeUids.push(j)
}
}
for(let k=0;k
rtmpUrl.splice(removeUids[k],1)
}
this.setData({
rtmpUrl:rtmpUrl
})
}
},