客户业务侧调用mTRTCCloud.startRemoteView()接口订阅远端视频流,出现偶现的失败情况,具体操作是在用户进入房间的回调事件onEnterRoom之前调用startRemoteView(),大概率会出现黑屏现象。客户告知希望可以根据自己的业务逻辑去订阅远端流。
// 提前订阅对方视频流
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 之后调用。
//参考代码
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 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有