跨频道媒体流转发
pauseAllChannelMediaRelay
暂停向所有目标频道的跨频道媒体流转发。
- (int)pauseAllChannelMediaRelay NS_SWIFT_NAME(pauseAllChannelMediaRelay());
跨频道媒体流转发开始后,你可以调用此方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
返回值
- 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 方法后,可以调用此方法恢复向所有目标频道转发媒体流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:方法调用被拒绝,当前没有已暂停的跨频道媒体流转发。
resumeAllChannelMediaRelayEx:
恢复向所有目标频道的跨频道媒体流转发。
- (int)resumeAllChannelMediaRelayEx:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(resumeAllChannelMediaRelayEx(_:));
调用 pauseAllChannelMediaRelayEx: 方法后,可以调用该方法恢复向所有目标频道转发媒体流。
适用场景
该方法适用于多频道场景。
参数
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有已暂停的跨频道媒体流转发。
startOrUpdateChannelMediaRelay:
开始或更新跨频道媒体流转发。
- (int)startOrUpdateChannelMediaRelay:(AgoraChannelMediaRelayConfiguration * _Nonnull)config NS_SWIFT_NAME(startOrUpdateChannelMediaRelay(_:));
- 若该回调返回
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:));
首次成功调用该方法会开始将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或退出当前的某个媒体流转发,可再次调用该方法更新目标频道。该功能最多支持将媒体流转发到六个目标频道。
- 请在加入频道后调用该方法。
- 该方法仅在你是极速直播频道中的主播时生效。
- 跨频道媒体流转发功能需联系技术支持开启。
- 该 API 不支持字符串用户 User Account。
适用场景
该方法适用于多频道场景。
相关回调
- 若回调返回
AgoraChannelMediaRelayStateRunning(2)和AgoraChannelMediaRelayErrorNone(0),表示 SDK 成功开始将媒体流从源频道转发到目标频道。 - 若回调返回
AgoraChannelMediaRelayStateFailure(3),表示媒体流转发过程中发生异常。
参数
- config
- 媒体流转发的配置。详见 AgoraChannelMediaRelayConfiguration。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
stopChannelMediaRelay
停止跨频道媒体流转发。
- (int)stopChannelMediaRelay NS_SWIFT_NAME(stopChannelMediaRelay());
调用该方法停止跨频道媒体流转发。调用成功后,主播会退出所有目标频道。SDK 会触发 rtcEngine:channelMediaRelayStateDidChange:error: 回调。如果该回调返回 AgoraChannelMediaRelayStateIdle(0)和 AgoraChannelMediaRelayErrorNone(0),表示主播成功停止转发。
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),表示主播已成功停止转发。
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。