跨频道媒体流转发
- iOS
更新时间不可用
pauseAllChannelMediaRelay
暂停向所有目标频道的跨频道媒体流转发。
- (int)pauseAllChannelMediaRelay NS_SWIFT_NAME(pauseAllChannelMediaRelay());跨频道媒体流转发开始后,你可以调用此方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
注: 请在调用 startOrUpdateChannelMediaRelay: 方法之后调用此方法。
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
所属接口类
pauseAllChannelMediaRelayEx:
暂停向所有目标频道的跨频道媒体流转发。
- (int)pauseAllChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(pauseAllChannelMediaRelayEx(_:));你可以调用该方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
注: 请在调用 startOrUpdateChannelMediaRelayEx 方法之后调用该方法。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
所属接口类
resumeAllChannelMediaRelay
恢复向所有目标频道的跨频道媒体流转发。
- (int)resumeAllChannelMediaRelay NS_SWIFT_NAME(resumeAllChannelMediaRelay());调用 pauseAllChannelMediaRelay 方法后,可以调用此方法恢复向所有目标频道转发媒体流。
注: 请在调用 pauseAllChannelMediaRelay 方法后调用此方法。
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:方法调用被拒绝,当前没有已暂停的跨频道媒体流转发。
所属接口类
resumeAllChannelMediaRelayEx:
恢复向所有目标频道的跨频道媒体流转发。
- (int)resumeAllChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(resumeAllChannelMediaRelayEx(_:));调用 pauseAllChannelMediaRelayEx: 方法后,可以调用该方法恢复向所有目标频道转发媒体流。
注: 请在调用 pauseAllChannelMediaRelayEx: 方法后再调用此方法。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有已暂停的跨频道媒体流转发。
所属接口类
startOrUpdateChannelMediaRelay:
开始或更新跨频道媒体流转发。
- (int)startOrUpdateChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config NS_SWIFT_NAME(startOrUpdateChannelMediaRelay(_:));自从
自 v4.2.0 版本新增。
首次成功调用该方法会开始将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或退出当前的某个媒体流转发,可再次调用该方法更新目标频道。该功能最多支持将媒体流转发到六个目标频道。 调用该方法成功后,SDK 会触发 rtcEngine:channelMediaRelayStateDidChange:error: 回调,报告媒体流转发的状态。
- 若该回调返回
AgoraChannelMediaRelayStateRunning(2)和AgoraChannelMediaRelayErrorNone(0),表示媒体流转发已成功启动。 - 若该回调返回
AgoraChannelMediaRelayStateFailure(3),表示媒体流转发过程中发生异常。
注:
- 请在加入频道后调用该方法。
- 该方法仅在你是直播频道中的主播时生效。
- 跨频道媒体流转发功能需联系技术支持开启。
- 该 API 不支持字符串用户 User Account。
参数
| 参数名 | 描述 |
|---|---|
config | 媒体流转发的配置。详见 AgoraChannelMediaRelayConfiguration。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
所属接口类
startOrUpdateChannelMediaRelayEx:connection:
开始或更新跨频道媒体流转发。
- (int)startOrUpdateChannelMediaRelayEx:(AgoraChannelMediaRelayConfiguration * _Nonnull)config connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(startOrUpdateChannelMediaRelayEx(_:connection:));自从
自 v4.2.0 版本新增。
首次成功调用该方法会开始将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或退出当前的某个媒体流转发,可再次调用该方法更新目标频道。该功能最多支持将媒体流转发到六个目标频道。
注:
- 请在加入频道后调用该方法。
- 该方法仅在你是直播频道中的主播时生效。
- 跨频道媒体流转发功能需联系技术支持开启。
- 该 API 不支持字符串用户 User Account。
适用场景
该方法适用于多频道场景。
相关回调
成功调用该方法后,SDK 会触发 rtcEngine:channelMediaRelayStateDidChange:error: 回调报告媒体流转发的状态。常见状态如下:
- 若回调返回
AgoraChannelMediaRelayStateRunning(2)和AgoraChannelMediaRelayErrorNone(0),表示 SDK 成功开始将媒体流从源频道转发到目标频道。 - 若回调返回
AgoraChannelMediaRelayStateFailure(3),表示媒体流转发过程中发生异常。
参数
| 参数名 | 描述 |
|---|---|
config | 媒体流转发的配置。详见 AgoraChannelMediaRelayConfiguration。 |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
0:方法调用成功。 < 0:方法调用失败。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
所属接口类
stopChannelMediaRelay
停止跨频道媒体流转发。
- (int)stopChannelMediaRelay NS_SWIFT_NAME(stopChannelMediaRelay());调用该方法停止跨频道媒体流转发。调用成功后,主播会退出所有目标频道。SDK 会触发 rtcEngine:channelMediaRelayStateDidChange:error: 回调。如果该回调返回 AgoraChannelMediaRelayStateIdle(0)和 AgoraChannelMediaRelayErrorNone(0),表示主播成功停止转发。
注: 如果方法调用失败,SDK 会通过 rtcEngine:channelMediaRelayStateDidChange:error: 回调返回 AgoraChannelMediaRelayErrorServerNoResponse(2)或 AgoraChannelMediaRelayErrorServerConnectionLost(8)错误码。你可以调用 leaveChannel 方法离开频道,跨频道媒体流转发会自动停止。
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
所属接口类
stopChannelMediaRelayEx:
停止跨频道媒体流转发。
- (int)stopChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(stopChannelMediaRelayEx(_:));调用该方法停止跨频道媒体流转发。调用成功后,主播会退出所有目标频道,SDK 会触发 rtcEngine:channelMediaRelayStateDidChange:error: 回调。如果该回调返回 AgoraChannelMediaRelayStateIdle(0)和 AgoraChannelMediaRelayErrorNone(0),表示主播已成功停止转发。
注: 如果方法调用失败,SDK 会通过 rtcEngine:channelMediaRelayStateDidChange:error: 回调报告 AgoraChannelMediaRelayErrorServerNoResponse(2)或 AgoraChannelMediaRelayErrorServerConnectionLost(8)错误码。你可以调用 leaveChannel:leaveChannelBlock: 方法离开频道,媒体流转发会自动停止。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
所属接口类
rtcEngine:channelMediaRelayStateDidChange:error:
跨频道媒体流转发状态发生变化回调。
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
channelMediaRelayStateDidChange:(AgoraChannelMediaRelayState)state
error:(AgoraChannelMediaRelayError)error NS_SWIFT_NAME(rtcEngine(_:channelMediaRelayStateDidChange:error:));该回调返回当前跨频道媒体流转发的状态及错误码。
触发时机
该回调在跨频道媒体流转发状态发生变化时触发。
参数
| 参数名 | 描述 |
|---|---|
engine | |
state | 跨频道媒体流转发的状态码,详见 AgoraChannelMediaRelayState。 |
error | 跨频道媒体流转发的错误码,详见 AgoraChannelMediaRelayError。 |