大小流
大小流模式是指在发布资源时上传一大一小两道视频流。
SDK 默认打开发布大小流功能,即每个用户在发布视频资源时自动发布大小两个视频流。小流的分辨率默认跟随大流。
提示
在多人音视频通话过程中,大小流模式可有效减少下行带宽占用。订阅方可按需订阅小流。
大小流分辨率对应关系
小视频流与大视频流的分辨率对应关系如下:
| 大流分辨率 | 小流分辨率 | 比例 | 
|---|---|---|
| 176X144 | 176X144 | 11:9 | 
| 180X180 | 180X180 | 1:1 | 
| 256X144 | 256X144 | 16:9 | 
| 240X180 | 240X180 | 4:3 | 
| 320X180 | 256X144 | 16:9 | 
| 240X240 | 180X180 | 1:1 | 
| 320X240 | 240X180 | 4:3 | 
| 360X360 | 180X180 | 1:1 | 
| 480X360 | 240X180 | 4:3 | 
| 640X360 | 256X144 | 16:9 | 
| 480X480 | 180X180 | 1:1 | 
| 640X480 | 240X180 | 4:3 | 
| 720X480 | 240X180 | 3:2 | 
| 848X480 | 256X144 | 9:5 | 
| 960X720 | 240X180 | 4:3 | 
| 1280X720 | 256X144 | 16:9 | 
| 1920X1080 | 256X144 | 16:9 | 
发布方开关大小流
需要在引擎创建时传入视频初始化配置指定开启或关闭大小流,开启功能后,发布资源时会发布大小两道流。
开启大小流功能
方法
Dart
RCRTCEngine.create();
参数说明
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| engineSetup | RCRTCEngineSetup | 是 | 引擎配置参数 | 
示例代码
Dart
/// 创建引擎时开启大小流功能
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableTinyStream: true);
RCRTCEngineSetup engineSetup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(engineSetup);
关闭大小流功能
方法
Dart
RCRTCEngine.create();
参数说明
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| engineSetup | RCRTCEngineSetup | 是 | 引擎配置参数 | 
示例代码
Dart
/// 创建引擎时关闭大小流功能
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableTinyStream: false);
RCRTCEngineSetup engineSetup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(engineSetup);
设置小流属性
如果开启了大小流功能,可以通过调用 setVideoConfig 方法时将 tiny 参数传入 true 来设置小流属性。
方法
Dart
RCRTCEngine.setVideoConfig();
参数说明
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| config | RCRTCVideoConfig | 是 | 视频配置参数 | 
| tiny | bool | 是 | 是否为小流配置,true表示小流,false表示大流 | 
示例代码
Dart
RCRTCVideoConfig config = RCRTCVideoConfig.create(
  minBitrate: 200,
  maxBitrate: 900,
  fps: RCRTCVideoFps.fps_15,
  resolution: RCRTCVideoResolution.resolution_480_640,
);
engine.setVideoConfig(config, true);
订阅方切换大小流
如果远端用户在加入房间前开启了大小流功能,本地在订阅远端视频流时可以通过调用 subscribe 方法时传入 tiny 参数订阅大流或小流。
订阅大流
方法
Dart
RCRTCEngine.subscribe();
参数说明
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| userId | String | 是 | 远端用户 ID | 
| type | RCRTCMediaType | 是 | 媒体类型 | 
| tiny | bool | 否 | 是否订阅小流,默认 false | 
示例代码
Dart
/// 订阅大流
engine.subscribe(userId, RCRTCMediaType.audio_video, false);
订阅小流
方法
Dart
RCRTCEngine.subscribe();
参数说明
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| userId | String | 是 | 远端用户 ID | 
| type | RCRTCMediaType | 是 | 媒体类型 | 
| tiny | bool | 否 | 是否订阅小流,默认 false | 
示例代码
Dart
/// 订阅小流
engine.subscribe(userId, RCRTCMediaType.audio_video, true);