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

【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 拉流时序是否正确

原创
作者头像
jackwlchen
修改于 2023-04-23 03:47:01
修改于 2023-04-23 03:47:01
52800
代码可运行
举报
文章被收录于专栏:腾讯云顾问腾讯云顾问
运行总次数:0
代码可运行

问题/风险描述:

客户业务侧调用mTRTCCloud.startRemoteView()接口订阅远端视频流,出现偶现的失败情况,具体操作是在用户进入房间的回调事件onEnterRoom之前调用startRemoteView(),大概率会出现黑屏现象。客户告知希望可以根据自己的业务逻辑去订阅远端流。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 提前订阅对方视频流
mTRTCCloud.startRemoteView(mUserId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, mTxcvvAnchorPreviewView);

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.enterRoom(mTRTCParams, TRTC_APP_SCENE_LIVE);

解决方案:

根据TRTC的推拉流规则,远端推视频流后,本地会收到远端推流的事件回 onUserVideoAvailable(userId,true),如果本地在远端推流之前订阅该流,会出现黑屏现象。为避免这个问题,可以通过以下步骤规避:

1、避免在远端用户推流前,或者推流结束之后调用startRemoteView拉视频流。

2、建议startRemoteView在远端流到达的事件回调 onUserVideoAvailable 之后调用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//参考代码
public void onUserVideoAvailable(String mRemoteUserId, boolean available) {
    if (available) { 
        // 视频流可用事件,订阅对方视频流
        mTRTCCloud.startRemoteView(mRemoteUserId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_SMALL, mTxcvvAnchorPreviewView);
    } else {
        // 视频流不可用事件,取消订阅对方视频流
        mTRTCCloud.stopRemoteView(mRemoteUserId);
    }
}

注意事项:

TRTC SDK因为健壮性原因,会对部分时序错误问题进行兼容处理,在开发中轻微的拉流时序错乱,不一定对结果有影响,但是还是建议严格按照TRTC SDK的规则调用相关的接口。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验