远端用户流
用户进入音视频房间后,想让其他人看见你的画面、听见你的声音,需要发布(Publish)本 地资源。想看到别人的画面、听见别人的声音,需要订阅(Subscribe)其他人已发布的资源。
订阅
用户的订阅需要在两个时机进行处理:
- 在加入房间的成功回调里,需要遍历
RCRTCRoom#remoteUsers得到房间内已经存在用户发布的流,并订阅。 - 在收到远端用户发布流的通知
didPublishStreams时,可调用RCRTCLocalUser中的subscribeStreams来订阅单个或多个媒体流。
提示
若远端视频流开启了大小流功能,可将订阅的视频小流通过 subscribeStreams 方法的 tinyStreams 参数传入。
参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| streams | RCRTCInputStream[] | 音视频流集合 |
| tinyStreams | RCRTCInputStream[] | 视频小流集合 |
| 返回值 | Promise<ICompletionResult> | 订阅结果的 Promise |
示例代码:
typescript
let streams: Array<RCRTCInputStream> = new Array();
room?.remoteUsers?.forEach(remoterUser => {
streams.push(...remoterUser.streams);
});
if (streams.length === 0) {
promptAction.showToast({message: '无可用订阅流'});
return;
}
room?.localUser.subscribeStreams(streams, []).then((result => {
if (result.code === RCRTCCode.SUCCESS) {
// 订阅成功
} else {
// 订阅失败
}
}));
取消订阅
当需要取消订阅时,可调用 RCRTCLocalUser 中的 unsubscribeStreams 来取消订阅一道流或多道流。取消订阅接口通常跟订阅接口配对使用,但如果是用户想要退出房间,则不需要调用取消订阅方法,在调用退出房间接口时,SDK 内部会自动进行取消处理。
参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| streams | RCRTCInputStream[] | 要取消订阅的音视频流 |
| 返回值 | Promise<ICompletionResult> | 取消订 阅结果的 Promise |
示例代码:
typescript
room?.localUser.unsubscribeStreams(streams).then((result => {
if (result.code === RCRTCCode.SUCCESS) {
// 取消订阅成功
} else {
// 取消订阅失败
}
}));