跨频道媒体流转发
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 | 跨频道媒体流转发出错的错误码。详见 |