背景

pc已经发起了共享流,然后不选择关闭共享流,而是直接另外发起另外一个共享流,小程序那边会出现黑屏的情况

分析

在小程序端打印日志,发现小程序能够监听到共享流移出,然后又重新add一个相同streamID的共享流,此时小程序的live-player就会出现黑屏,可能是因为相同streamID不会引起组件重新刷新(这个原因,工单人员也没有给我讲清楚)
但是观察手动关闭共享流的情况,发现正常关闭共享流,该流用户会退出房间,而重新发起共享并没有退出房间,只是把视频流移除了而已

解决

查找重新发起共享流代码发现,pc端只是把流stop流,并没有leave,所以把流正常leave,小程序端就正常了

  1. this.localStream3.close();
  2. this.roomUserList.forEach(item => {
  3. if (item.user_id === this.localUserID) {
  4. item.stream_share = null;
  5. }
  6. });
  7. this.remoteShareList.forEach((item, index) => {
  8. if (item === this.localUserID) {
  9. this.remoteShareList.splice(index, 1);
  10. }
  11. });
  12. // 移除共享流用户
  13. this.shareClient.leave();