视频双流
enableDualStreamMode [1/2]
在发送端开启或关闭双流模式。
- (int)enableDualStreamMode:(BOOL)enabled;
从 v4.2.0 起废弃,请改用 setDualStreamMode [1/2]
。
双流指视频大流和视频小流:
-
视频大流:高分辨率、高帧率的视频流。
-
视频小流:低分辨率、低帧率的视频流。
开启双流模式后,你可以在收流端调用 setRemoteVideoStream
选择接收视频大流或视频小流。
注:
-
该方法适用于发送端发送的所有类型的流,包括且不限于来自摄像头采集的视频流、屏幕共享流、自定义采集的视频流。
-
如果需要在多频道场景下开启视频双流,可以调用
enableDualStreamModeEx
方法。 -
该方法可以在加入频道前后调用。
参数
参数名 | 描述 |
---|---|
enabled | 是否开启双流模式。
|
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
enableDualStreamMode [2/2]
在发送端开启或关闭双流模式并设置视频小流。
- (int)enableDualStreamMode:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig;
从 v4.2.0 起废弃,请改用 setDualStreamMode [2/2]
。
你可以在发流端调用该方法开启或关闭双流模式。双流指视频大流和视频小流:
-
视频大流:高分辨率、高帧率的视频流。
-
视频小流:低分辨率、低帧率的视频流。
开启双流模式后,你可以在收流端调用 setRemoteVideoStream
选择接收视频大流或视频小流。
注:
-
该方法适用于发送端发送的所有类型的流,包括且不限于来自摄像头采集的视频流、屏幕共享流、自定义采集的视频流。
-
如果需要在多频道场景下开启视频双流,可以调用
enableDualStreamModeEx
方法。 -
该方法可以在加入频道前后调用。
参数
参数名 | 描述 |
---|---|
enabled | 是否开启双流模式:
|
streamConfig | 视频小流的配置。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。 详见
错误码
了解详情和解决建议。
enableDualStreamModeEx
在发送端开启或关闭双流模式。
- (int)enableDualStreamModeEx:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig*)streamConfig
connection:(AgoraRtcConnection* _Nonnull)connection;
v4.0.1
你可以在发流端调用该方法开启或关闭双流模式。双流指视频大流和视频小流:
-
视频大流:高分辨率、高帧率的视频流。
-
视频小流:低分辨率、低帧率的视频流。
开启双流模式后,你可以在收流端调用 setRemoteVideoStream
选择接收视频大流或视频小流。
注: 该方法适用于发送端发送的所有类型的流,包括且不限于来自摄像头采集的视频流、屏幕共享流、自定义采集的视频流。
参数
参数名 | 描述 |
---|---|
enabled | 是否开启双流模式:
|
streamConfig | 视频小流的配置。详见 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。 详见
错误码
了解详情和解决建议。
setDualStreamMode [1/2]
在发送端设置双流模式。
- (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode;
v4.0.1
SDK 默认在发送端开启小流 auto 模式(不主动发送小流),主播身份的接收端可以调用 setRemoteVideoStream
发起小流申请,发送端收到申请后自动切换为小流模式。
-
如果你想修改此行为,可以调用该方法并修改
mode
为AgoraDisableSimulcastStream
(始终不发送小流)或AgoraEnableSimulcastStream
(始终发送小流)。 -
如果你在进行修改后又想恢复该默认行为,可重新调用该方法,并将
mode
设置为AgoraAutoSimulcastStream
。
注: 该方法和 enableDualStreamMode [1/2]
的区别与联系如下:
-
调用该方法并设置
mode
为AgoraDisableSimulcastStream
时,跟enableDualStreamMode [1/2]
(NO)
的效果相同。 -
调用该方法并设置
mode
为AgoraEnableSimulcastStream
时,跟enableDualStreamMode [1/2]
(YES)
的效果相同。 -
两种方法均可在加入频道前后调用,若同时使用,则以后调用的方法中的设置为准。
参数
参数名 | 描述 |
---|---|
mode | 发送视频流的模式。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
setDualStreamMode [2/2]
在发送端设置双流模式并设置视频小流。
- (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode
streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig;
v4.0.1
SDK 默认在发送端开启小流 auto 模式(不主动发送小流),主播身份的接收端可以调用 setRemoteVideoStream
发起小流申请,发送端收到申请后自动切换为小流模式。
-
如果你想修改此行为,可以调用该方法并修改
mode
为AgoraDisableSimulcastStream
(始终不发送小流)或AgoraEnableSimulcastStream
(始终发送小流)。 -
如果你在进行修改后又想恢复该默认行为,可重新调用该方法,并将
mode
设置为AgoraAutoSimulcastStream
。
该方法跟 setDualStreamMode [1/2]
的区别在于,该方法还可以进行视频小流的配置,SDK 会根据 streamConfig
中的配置发送小流。
注: 该方法和 enableDualStreamMode [2/2]
的区别与联系如下:
-
调用该方法并设置
mode
为AgoraDisableSimulcastStream
时,跟调用 `` 并设置enabled
为NO
的效果相同。 -
调用该方法并设置
mode
为AgoraEnableSimulcastStream
时,跟调用 `` 并设置enabled
为YES
的效果相同。 -
两种方法均可在加入频道前后调用,若同时使用,则以后调用的方法中的设置为准。
参数
参数名 | 描述 |
---|---|
mode | 发送视频流的模式。详见 |
streamConfig | 视频小流的配置。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。 详见
错误码
了解详情和解决建议。
setDualStreamModeEx
在发送端设置双流模式。
- (int)setDualStreamModeEx:(AgoraSimulcastStreamMode)mode
streamConfig:(AgoraSimulcastStreamConfig*)streamConfig
connection:(AgoraRtcConnection* _Nonnull)connection;
v4.0.1
SDK 默认在发送端开启小流 auto 模式,效果等同于调用该方法并将 mode
设置为 AgoraAutoSimulcastStream
。如果你想修改此行为,可以调用该方法并修改 mode
为 AgoraDisableSimulcastStream
(始终不发送小流)或 AgoraEnableSimulcastStream
(始终发送小流)。
注: 该方法和 enableDualStreamModeEx
的区别与联系如下:
-
调用该方法并设置
mode
为 AgoraDisableSimulcastStream 时,跟enableDualStreamModeEx
(NO)
的效果相同。 -
调用该方法并设置
mode
为 AgoraEnableSimulcastStream 时,跟enableDualStreamModeEx
(YES)
的效果相同。 -
两种方法均可在加入频道前后调用,若同时使用,则以后调用的方法中的设置为准。
参数
参数名 | 描述 |
---|---|
mode | 发送视频流的模式。详见 |
streamConfig | 视频小流的配置。详见 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。 详见
错误码
了解详情和解决建议。
setRemoteDefaultVideoStreamType
设置默认订阅的视频流类型。
- (int)setRemoteDefaultVideoStreamType:(AgoraVideoStreamType)streamType;
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode [2/2]
(NO)
关闭双流模式,接收端可以选择接收大流还是小流。其中,大流为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需默认接收所有用户的视频小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
SDK 默认在发送端开启小流 auto 模式(不主动发送小流),主播身份的接收端可以调用本方法在接收端发起小流申请(观众角色的接收端调用该方法不生效),发送端收到申请后自动切换为小流模式。
注意:
-
该方法只能在加入频道前调用。SDK 不支持你在加入频道后修改默认订阅的视频流类型。
-
如果你既调用了该方法,也调用了
setRemoteVideoStream
,则 SDK 以setRemoteVideoStream
中的设置为准。
参数
参数名 | 描述 |
---|---|
streamType | 默认订阅的视频流类型: |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setRemoteVideoStream
设置订阅的视频流类型。
- (int)setRemoteVideoStream:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType;
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode [2/2]
(NO)
关闭双流模式,接收端可以调用该方法选择接收大流还是小流。其中,大流为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需接收小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
SDK 默认在发送端开启小流 auto 模式(不主动发送小流),主播身份的接收端可以调用本方法在接收端发起小流申请(观众角色的接收端调用该方法不生效),发送端收到申请后自动切换为小流模式。
注意: 该方法在加入频道前后都能调用。如果既调用了 setRemoteVideoStream
,也调用了 setRemoteDefaultVideoStreamType
,则 SDK 以 setRemoteVideoStream
中的设置为准。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID。 |
streamType | 视频流类型: |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setRemoteVideoStreamEx
设置订阅的视频流类型。
- (int)setRemoteVideoStreamEx:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setRemoteVideoStreamEx(_:type:connection:));
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamModeEx
(NO)
关闭双流模式,接收端可以调用该方法选择接收大流还是小流。其中,大流为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需接收小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
SDK 默认在发送端开启小流 auto 模式(不主动发送小流),接收端主播可以调用本方法在接收端发起小流申请,发送端收到申请后自动切换为小流模式。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID。 |
streamType | 视频流类型: |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。