跳到主要内容

大小流

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

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 sharedInstance].defaultVideoStream 取得将要发布的视频流。

设置 defaultVideoStream 对象中的 enableTinyStream 属性可以控制是否发布默认视频的小流视频,如下:

@property (nonatomic, assign, readwrite) BOOL enableTinyStream;
参数类型说明
enableTinyStreamBOOL是否启用视频小流。

如果摄像头视频流,默认为开启。如果自定义视频流,默认为关闭。

[RCRTCEngine sharedInstance].defaultVideoStream.enableTinyStream = YES;

订阅方切换大小流

在订阅远端视频时或视频通话过程中,可通过 tinyStreamsavStreams 参数订阅或切换远端用户的大小视频流,同一个流只能填写在 avStreams 或 tinyStreams 中的一个数组中。

- (void)subscribeStream:(nullable NSArray<RCRTCInputStream *> *)avStreams
tinyStreams:(nullable NSArray<RCRTCInputStream *> *)tinyStreams
completion:(nullable RCRTCOperationCallback)completion;
参数类型说明
avStreamsNSArray视频大流数组
tinyStreamsNSArray视频小流数组
completionRCRTCOperationCallback订阅完成后回调
// avStreams 和 tinyAVStreams 中的 `RongInputAVStream` 对象可从上报的远端发布流的代理方法中取得
[[RCRTCEngine sharedInstance].room.localUser subscribeAVStream:avStreams
tinyStreams:tinyAVStreams
completion:^(BOOL isSuccess, RCRTCCode desc) {
}];