跳到主要内容

大小流

大小流模式是指在发布资源时上传一大一小两道视频流。

SDK 默认打开发布大小流功能,即每个用户在发布视频资源时自动发布大小两个视频流。小流的分辨率默认跟随大流。

提示

在多人音视频通话过程中,大小流模式可有效减少下行带宽占用。订阅方可按需订阅小流。

小视频流与大视频流的分辨率对应关系如下:

大流分辨率小流分辨率比例
176X144176X14411:9
180X180180X1801:1
256X144256X14416:9
240X180240X1804:3
320X180256X14416:9
240X240180X1801:1
320X240240X1804:3
360X360180X1801:1
480X360240X1804:3
640X360256X14416:9
480X480180X1801:1
640X480240X1804:3
720X480240X1803:2
848X480256X1449:5
960X720240X1804:3
1280X720256X14416:9
1920X1080256X14416:9

发布方开关大小流

需要在加入房间前打开或关闭大小流。在加入房间后修改不生效。开启后,发布资源时会发布大小两道流。

RCRTCEngine.getInstance().getDefaultVideoStream().enableTinyStream(enable);
参数类型说明
enableTinyStreamboolean大小流开关 默认开启

订阅方切换大小流

如果远端用户在加入房间前开启了大小流功能,本地在订阅远端视频流时可以通过 RCRTCVideoInputStream#setStreamType 方法选择订阅大流或小流。

for (RCRTCInputStream inputStream : inputStreams) {
if (inputStream.getMediaType() == RCRTCMediaType.VIDEO){
RCRTCVideoInputStream videoInputStream = (RCRTCVideoInputStream) inputStream;
// 默认值是 NORMAL 即大流,这里演示设置成订阅小流的情况。
videoInputStream.setStreamType(RCRTCStreamType.TINY);
}
}
//设置好订阅大流或小流后,执行订阅操作,即完成了切换大小流操作
rtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultDataCallback<List<RCRTCInputStream>>() {
@Override
public void onSuccess() {

}

@Override
// 如果 SDK ≧ 5.3.4,您可以使用 IRCRTCResultDataCallback,onFailed 方法会返回订阅失败的流列表和错误码。
// 如果 SDK < 5.3.4,仅支持使用 IRCRTCResultCallback,onFailed 方法仅返回错误码。
public void onFailed(List<RCRTCInputStream> failedStreams, RTCErrorCode errorCode) {

}
});