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

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

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

问题/风险描述:

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

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