跨频道媒体流转发
pauseAllChannelMediaRelay
暂停向所有目标频道的跨频道媒体流转发。
C++
virtual int pauseAllChannelMediaRelay() = 0;
你可以在开始跨频道媒体流转发后调用该方法,以暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
信息
请在调用 startOrUpdateChannelMediaRelay 方法之后调用此方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
pauseAllChannelMediaRelayEx
暂停向所有目标频道的跨频道媒体流转发。
C++
virtual int pauseAllChannelMediaRelayEx(const RtcConnection& connection) = 0;
你可以在开始跨频道媒体流转发后调用该方法,暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
信息
请在调用 startOrUpdateChannelMediaRelayEx 方法后调用该方法。
适用场景
该方法适用于多频道场景。
参数
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
resumeAllChannelMediaRelay
恢复向所有目标频道的跨频道媒体流转发。
C++
virtual int resumeAllChannelMediaRelay() = 0;
信息
请在调用 pauseAllChannelMediaRelay 方法后再调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有已暂停的跨频道媒体流转发。
resumeAllChannelMediaRelayEx
恢复向所有目标频道的跨频道媒体流转发。
C++
virtual int resumeAllChannelMediaRelayEx(const RtcConnection& connection) = 0;
信息
请在调用 pauseAllChannelMediaRelayEx 方法后调用该方法。
适用场景
该方法适用于多频道场景。
参数
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有已暂停的跨频道媒体流转发。
startOrUpdateChannelMediaRelay
开始跨频道媒体流转发,或更新媒体流转发的目标频道。
C++
virtual int startOrUpdateChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
自从
自 v4.2.0 版本新增。
首次成功调用该方法会将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或停止转发到某个频道,可再次调用该方法更新目标频道。最多支持转发到六个目标频道。
信息
- 请在加入频道后调用该方法。
- 该方法仅在你是极速直播频道中的主播时有效。
- 跨频道媒体流转发功能需联系技术支持启用。
- 该方法不支持字符串用户 User Account。
相关回调
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged 回调,报告媒体流转发的状态。 常见状态如下:
- 如果 onChannelMediaRelayStateChanged 回调返回
RELAY_STATE_RUNNING(2)和RELAY_OK(0),表示 SDK 成功开始将媒体流从源频道转发到目标频道。 - 如果 onChannelMediaRelayStateChanged 回调返回
RELAY_STATE_FAILURE(3),表示媒体流转发过程中发生异常。
参数
- configuration
- 媒体流转发的配置,详见 ChannelMediaRelayConfiguration。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
startOrUpdateChannelMediaRelayEx
开始或更新跨频道媒体流转发。
C++
virtual int startOrUpdateChannelMediaRelayEx(const ChannelMediaRelayConfiguration& configuration, const RtcConnection& connection) = 0;
自从
自 v4.2.0 版本新增。
首次成功调用该方法会开始将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或退出当前的某个媒体流转发,可再次调用该方法以更新目标频道。该功能最多支持将媒体流转发到六个目标频道。调用该方法成功后,SDK 会触发 onChannelMediaRelayStateChanged 回调,报告媒体流转发的状态:
- 当回调返回
RELAY_STATE_RUNNING(2)和RELAY_OK(0)时,表示媒体流已开始从源频道转发到目标频道。 - 当回调返回
RELAY_STATE_FAILURE(3)时,表示媒体流转发过程中出现异常。
信息
- 请在加入频道后调用该方法。
- 该方法仅在你是极速直播频道中的主播时生效。
- 跨频道媒体流转发功能需联系技术支持启用。
- 该方法不支持字符串用户 User Account。
适用场景
该方法适用于多频道场景。
参数
- configuration
- 媒体流转发的配置。详见 ChannelMediaRelayConfiguration。
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
stopChannelMediaRelay
停止跨频道媒体流转发。
C++
virtual int stopChannelMediaRelay() = 0;
调用该方法停止跨频道媒体流转发。一旦转发停止,主播会退出所有目标频道。
信息
如果方法调用失败,SDK 会触发 onChannelMediaRelayStateChanged 回调,并返回
RELAY_ERROR_SERVER_NO_RESPONSE(2)或 RELAY_ERROR_SERVER_CONNECTION_LOST(8)状态码。你也可以调用 leaveChannel 方法离开频道,跨频道媒体流转发将自动停止。相关回调
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged 回调报告媒体流转发状态。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
stopChannelMediaRelayEx
停止跨频道媒体流转发。
C++
virtual int stopChannelMediaRelayEx(const RtcConnection& connection) = 0;
调用该方法可停止跨频道媒体流转发。一旦转发停止,主播会退出所有目标频道。
信息
如果方法调用失败,SDK 会触发 onChannelMediaRelayStateChanged 回调,并返回
RELAY_ERROR_SERVER_NO_RESPONSE(2)或 RELAY_ERROR_SERVER_CONNECTION_LOST(8)状态码。你也可以调用 leaveChannel 方法离开频道,跨频道媒体流转发会自动停止。适用场景
该方法适用于多频道场景。
相关回调
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged 回调。如果回调返回 RELAY_STATE_IDLE(0)和 RELAY_OK(0),表示主播成功停止转发。
参数
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
onChannelMediaRelayStateChanged
跨频道媒体流转发状态变化回调。
C++
virtual void onChannelMediaRelayStateChanged(int state, int code)
该回调返回当前跨频道媒体流转发的状态和错误码信息。
参数
- state
- 状态码。详见 CHANNEL_MEDIA_RELAY_STATE。
- code
- 错误码。详见 CHANNEL_MEDIA_RELAY_ERROR。