前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 退房逻辑是否正确

【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 退房逻辑是否正确

原创
作者头像
jackwlchen
修改2023-04-23 11:46:43
4590
修改2023-04-23 11:46:43
举报
文章被收录于专栏:腾讯云顾问腾讯云顾问

问题/风险描述:

用户新进入A房间推流,过一段时间之后,用户退出A房间,然后进入B房,出现了预览画面黑屏现象,从仪表盘看没有视频推流数据。本地日志显示用户确实先从A房间退出(exitRoom A),然后再进入B房间(enterRoom B),同时日志有报glError 1282错误。

参考日志
参考日志

安卓端报glError 1282错误通常是glContext环境切换异常导致,进一步排查日志发现,用户在退房后,没有等待onExitRoom事件回调,而是在exitRoom之后就调用enterRoom进入了另一个房间。

代码语言:javascript
复制
//参考代码
mTRTCParams = new TRTCCloudDef.TRTCParams();
mTRTCParams.sdkAppId = GenerateTestUserSig.SDKAPPID;
mTRTCParams.userId = mUserId;
mTRTCParams.roomId = Integer.parseInt(mRoomId);
mTRTCParams.userSig = GenerateTestUserSig.genTestUserSig(mTRTCParams.userId);
mTRTCParams.role =TRTCCloudDef.TRTCRoleAudience;
// 退出房间
mTRTCCloud.exitRoom();
// 进入房间
mTRTCCloud.enterRoom(mTRTCParams, TRTC_APP_SCENE_LIVE);

根据TRTC SDK的规范,退出房间会释放相关的资源,状态会重置,但这个过程是异步的。在触发 onExitRoom回调之前,相关的操作会在SDK线程执行,执行完毕后才会触发onExitRoom。

因为用户在退房过程中,没有等待相关的状态重置完毕,就再次进入另外一个房间,导致SDK内部状态混乱,报错glContext 切换异常。

解决方案:

通过上面分析知道,该问题的原因是因为进房(enterRoom)的时机不对,解决办法是在执行再次进入新的房间操作时候,需要等待前一个退房操作完成;

改进步骤只需要把进入房间的相关代码,移动到onExitRoom的事件回调里面执行。

代码语言:javascript
复制
//参考代码
boolean dontEnterRoom = false;
@Override
public void onExitRoom(int code) {
    // 退出前一个房间的事件
    if(code>=0 && !dontEnterRoom) {
        mTRTCParams = new TRTCCloudDef.TRTCParams();
        mTRTCParams.sdkAppId = GenerateTestUserSig.SDKAPPID;
        mTRTCParams.userId = mUserId;
        mTRTCParams.roomId = Integer.parseInt("2222");
        mTRTCParams.userSig = GenerateTestUserSig.genTestUserSig(mTRTCParams.userId);
        mTRTCParams.role = TRTCCloudDef.TRTCRoleAnchor;
        mTRTCCloud.enterRoom(mTRTCParams, TRTC_APP_SCENE_LIVE);
        dontEnterRoom = true;
    }
}

注意事项:

在进入房间(enterRoom)和退出房间(exitRoom)SDK都会在SDK线程执行一些耗时操作,从而避免UI因此卡住,所以需要等待各自操作完成的事件回调,才可以继续执行相关操作。另外,如果只是进入另外的房间,推荐使用switchRoom接口。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题/风险描述:
  • 解决方案:
  • 注意事项:
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档