跨频道媒体流转发
pauseAllChannelMediaRelay
暂停向所有目标频道转发媒体流。
- (int)pauseAllChannelMediaRelay;
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 resumeAllChannelMediaRelay
方法。
注意: 该方法需要在调用 startOrUpdateChannelMediaRelay
开始跨频道媒体流转发后调用。
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
pauseAllChannelMediaRelayEx
暂停向所有目标频道转发媒体流。
- (int)pauseAllChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(pauseAllChannelMediaRelayEx(_:));
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 resumeAllChannelMediaRelay
方法。
注意: 该方法需要在调用 startOrUpdateChannelMediaRelayEx
开始跨频道媒体流转发后调用。
参数
参数名 | 描述 |
---|---|
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
resumeAllChannelMediaRelay
恢复向所有目标频道转发媒体流。
- (int)resumeAllChannelMediaRelay;
调用 pauseAllChannelMediaRelay
方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
注意: 该方法需要在 pauseAllChannelMediaRelay
后调用。
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
resumeAllChannelMediaRelayEx
恢复向所有目标频道转发媒体流。
- (int)resumeAllChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(resumeAllChannelMediaRelayEx(_:));
调用 pauseAllChannelMediaRelayEx
方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
注意: 该方法需要在 pauseAllChannelMediaRelayEx
后调用。
参数
参数名 | 描述 |
---|---|
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
startChannelMediaRelay
开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。
- (int)startChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config;
该方法已废弃。请改用 startOrUpdateChannelMediaRelay
。
成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange
和 didReceiveChannelMediaRelayEvent
回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
-
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateRunning
(2) 和AgoraChannelMediaRelayErrorNone
(0),且didReceiveChannelMediaRelayEvent
回调报告AgoraChannelMediaRelayEventSentToDestinationChannel
(4), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。 -
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateFailure
(3), 则表示跨频道媒体流转发出现异常。
注意:
-
请在成功加入频道后调用该方法。
-
在直播场景中,只有角色为主播的用户才能调用该方法。
-
成功调用该方法后,若你想再次调用该方法,必须先调用
stopChannelMediaRelay
方法退出当前的转发状态。 -
跨频道媒体流转发功能需要
联系技术支持
开通。 -
该功能不支持 String 型 UID。
参数
参数名 | 描述 |
---|---|
config | 跨频道媒体流转发参数配置。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。
-
-1: 一般性的错误(未明确归类)。
-
-2: 参数无效。
-
-7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
-
-8:内部状态错误。可能因为用户角色不是主播。
-
startChannelMediaRelayEx
开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。
- (int)startChannelMediaRelayEx:(AgoraChannelMediaRelayConfiguration * _Nonnull)config connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(startChannelMediaRelayEx(_:connection:));
该方法已废弃。请改用 startOrUpdateChannelMediaRelayEx
。
成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange
和 didReceiveChannelMediaRelayEvent
回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
-
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateRunning
(2) 和AgoraChannelMediaRelayErrorNone
(0),且didReceiveChannelMediaRelayEvent
回调报告AgoraChannelMediaRelayEventSentToDestinationChannel
(4), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。 -
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateFailure
(3), 则表示跨频道媒体流转发出现异常。
注意:
-
请在成功加入频道后调用该方法。
-
在直播场景中,只有角色为主播的用户才能调用该方法。
-
成功调用该方法后,若你想再次调用该方法,必须先调用
stopChannelMediaRelayEx
方法退出当前的转发状态。 -
跨频道媒体流转发功能需要
联系技术支持
开通。 -
该功能不支持 String 型 UID。
参数
参数名 | 描述 |
---|---|
config | 跨频道媒体流转发参数配置。详见 |
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。
-
-1: 一般性的错误(未明确归类)。
-
-2: 参数无效。
-
-7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
-
-8:内部状态错误。可能因为用户角色不是主播。
-
startOrUpdateChannelMediaRelay
开始或更新跨频道媒体流转发。
- (int)startOrUpdateChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config NS_SWIFT_NAME(startOrUpdateChannelMediaRelay(_:));
v4.2.0
首次成功调用该方法将开始跨频道转发媒体流。如需将流转发到多个目标频道,或退出当前的转发频道,可以再次调用该方法添加或移除转发的目标频道。该功能最多支持将媒体流转发至 6 个目标频道。
成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange
回调,报告当前的跨频道媒体流转发状态。常见状态如下:
-
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateRunning
(2) 和AgoraChannelMediaRelayErrorNone
(0), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。 -
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateFailure
(3), 则表示跨频道媒体流转发出现异常。
注意:
-
请在成功加入频道后调用该方法。
-
在直播场景中,只有角色为主播的用户才能调用该方法。
-
跨频道媒体流转发功能需要
联系技术支持
开通。 -
该功能不支持 String 型 UID。
参数
参数名 | 描述 |
---|---|
config | 跨频道媒体流转发参数配置。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。
-
-1: 一般性的错误(未明确归类)。
-
-2: 参数无效。
-
-7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
-
-8:内部状态错误。可能因为用户角色不是主播。
-
startOrUpdateChannelMediaRelayEx
开始或更新跨频道媒体流转发。
- (int)startOrUpdateChannelMediaRelayEx:(AgoraChannelMediaRelayConfiguration * _Nonnull)config connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(startOrUpdateChannelMediaRelayEx(_:connection:));
v4.2.0
首次成功调用该方法将开始跨频道转发媒体流。如需将流转发到多个目标频道,或退出当前的转发频道,可以再次调用该方法添加或移除转发的目标频道。该功能最多支持将媒体流转发至 6 个目标频道。
成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange
回调,报告当前的跨频道媒体流转发状态。常见状态如下:
-
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateRunning
(2) 和AgoraChannelMediaRelayErrorNone
(0), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。 -
如果
channelMediaRelayStateDidChange
回调报告AgoraChannelMediaRelayStateFailure
(3), 则表示跨频道媒体流转发出现异常。
注意:
-
请在成功加入频道后调用该方法。
-
在直播场景中,只有角色为主播的用户才能调用该方法。
-
跨频道媒体流转发功能需要
联系技术支持
开通。 -
该功能不支持 String 型 UID。
参数
参数名 | 描述 |
---|---|
config | 跨频道媒体流转发参数配置。详见 |
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。
-
-1: 一般性的错误(未明确归类)。
-
-2: 参数无效。
-
-7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
-
-8:内部状态错误。可能因为用户角色不是主播。
-
stopChannelMediaRelay
停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。
- (int)stopChannelMediaRelay;
成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange
回调。如果报告 AgoraChannelMediaRelayStateIdle
(0) 和 AgoraChannelMediaRelayErrorNone
(0),则表示已停止转发媒体流。
注意:
如果该方法调用不成功,SDK 会触发 channelMediaRelayStateDidChange
回调,并报告状态码 AgoraChannelMediaRelayErrorServerNoResponse
(2) 或 AgoraChannelMediaRelayErrorServerConnectionLost
(8)。你可以调用 leaveChannel [2/2]
方法离开频道,跨频道媒体流转发会自动停止。
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
stopChannelMediaRelayEx
停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。
- (int)stopChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(stopChannelMediaRelayEx(_:));
成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange
回调。如果报告 AgoraChannelMediaRelayStateIdle
(0) 和 AgoraChannelMediaRelayErrorNone
(0),则表示已停止转发媒体流。
注意:
如果该方法调用不成功,SDK 会触发 channelMediaRelayStateDidChange
回调,并报告状态码 AgoraChannelMediaRelayErrorServerNoResponse
(2) 或 AgoraChannelMediaRelayErrorServerConnectionLost
(8)。你可以调用 leaveChannel [2/2]
方法离开频道,跨频道媒体流转发会自动停止。
参数
参数名 | 描述 |
---|---|
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
updateChannelMediaRelay
更新媒体流转发的频道。
- (int)updateChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config;
该方法已废弃。请改用 startOrUpdateChannelMediaRelay
。
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 didReceiveChannelMediaRelayEvent
回调, 并在回调中报告状态码 AgoraChannelMediaRelayEventUpdateDestinationChannel
(7)。
注意: 请在成功调用 startChannelMediaRelay
方法并收到 channelMediaRelayStateDidChange
(AgoraChannelMediaRelayStateRunning, AgoraChannelMediaRelayErrorNone)
后调用该方法;否则,方法调用会失败。
参数
参数名 | 描述 |
---|---|
config | 跨频道媒体流转发参数配置。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
updateChannelMediaRelayEx
更新媒体流转发的频道。
- (int)updateChannelMediaRelayEx:(AgoraChannelMediaRelayConfiguration * _Nonnull)config connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(updateChannelMediaRelayEx(_:connection:));
该方法已废弃。请改用 startOrUpdateChannelMediaRelayEx
。
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 didReceiveChannelMediaRelayEvent
回调, 并在回调中报告状态码 AgoraChannelMediaRelayEventUpdateDestinationChannel
(7)。
注意: 请在成功调用 startChannelMediaRelayEx
方法并收到 channelMediaRelayStateDidChange
(AgoraChannelMediaRelayStateRunning, AgoraChannelMediaRelayErrorNone)
后调用该方法;否则,方法调用会失败。
参数
参数名 | 描述 |
---|---|
config | 跨频道媒体流转发参数配置。详见 |
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
didReceiveChannelMediaRelayEvent
跨频道媒体流转发事件回调。
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
didReceiveChannelMediaRelayEvent:(AgoraChannelMediaRelayEvent)event;
该回调已废弃。
参数
参数名 | 描述 |
---|---|
engine |
|
event | 跨频道媒体流转发事件码。详见 |
channelMediaRelayStateDidChange
跨频道媒体流转发状态发生改变回调。
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
channelMediaRelayStateDidChange:(AgoraChannelMediaRelayState)state
error:(AgoraChannelMediaRelayError)error;
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。
参数
参数名 | 描述 |
---|---|
engine |
|
state | 跨频道媒体流转发状态。详见 |
code | 跨频道媒体流转发出错的错误码。详见 |