跨频道媒体流转发
pauseAllChannelMediaRelay
暂停向所有目标频道的跨频道媒体流转发。
Java
public abstract int pauseAllChannelMediaRelay();
你可以调用该方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
信息
请在调用 startOrUpdateChannelMediaRelay 方法之后调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
pauseAllChannelMediaRelayEx
暂停向所有目标频道的跨频道媒体流转发。
Java
public abstract int pauseAllChannelMediaRelayEx(RtcConnection connection);
废弃
你可以调用该方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。
信息
请在调用 startOrUpdateChannelMediaRelayEx 方法后调用此方法。
适用场景
该方法适用于多频道场景。
参数
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
resumeAllChannelMediaRelay
恢复向所有目标频道的跨频道媒体流转发。
Java
public abstract int resumeAllChannelMediaRelay();
调用 pauseAllChannelMediaRelay 后,你可以调用该方法恢复媒体流的转发。
信息
请在调用 pauseAllChannelMediaRelay 后再调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有已暂停的跨频道媒体流转发。
resumeAllChannelMediaRelayEx
恢复向所有目标频道的跨频道媒体流转发。
Java
public abstract int resumeAllChannelMediaRelayEx(RtcConnection connection);
调用 pauseAllChannelMediaRelayEx 后,可以调用此方法恢复媒体流的转发。
信息
请在调用 pauseAllChannelMediaRelayEx 方法后再调用此方法。
适用场景
该方法适用于多频道场景。
参数
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有处于暂停状态的跨频道媒体流转发。
startOrUpdateChannelMediaRelay
开始或更新跨频道媒体流转发。
Java
public abstract int startOrUpdateChannelMediaRelay(ChannelMediaRelayConfiguration channelMediaRelayConfiguration);
自从
自 v4.2.0 版本新增。
首次成功调用该方法会将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或退出当前的某个媒体流转发,可再次调用该方法以更新目标频道。该功能最多支持将媒体流转发到六个目标频道。
信息
请在加入频道后调用该方法。该方法仅在你是极速直播频道中的主播时生效。跨频道媒体流转发功能需联系技术支持开启。该 API 不支持字符串用户 User Account。
相关回调
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged 回调报告媒体流转发的状态。
- 如果 onChannelMediaRelayStateChanged 回调返回
RELAY_STATE_RUNNING(2)和RELAY_OK(0),表示 SDK 成功开始将媒体流从源频道转发到目标频道。 - 如果回调返回
RELAY_STATE_FAILURE(3),表示媒体流转发过程中发生异常。
参数
- channelMediaRelayConfiguration
- 媒体流转发的配置。详见 ChannelMediaRelayConfiguration。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
startOrUpdateChannelMediaRelayEx
开始或更新跨频道媒体流转发。
Java
public abstract int startOrUpdateChannelMediaRelayEx(ChannelMediaRelayConfiguration channelMediaRelayConfiguration, RtcConnection connection);
自从
自 v4.2.0 版本新增。
首次成功调用该方法会将媒体流从源频道转发到目标频道。若需将媒体流转发到其他频道,或退出当前的某个媒体流转发,可再次调用该方法以更新目标频道。该功能最多支持将媒体流转发到六个目标频道。
信息
- 请在加入频道后调用该方法。
- 该方法仅在你是极速直播频道中的主播时有效。
- 跨频道媒体流转发功能需联系技术支持开启。
- 该 API 不支持字符串用户 User Account。
适用场景
该方法适用于多频道场景。
相关回调
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged 回调报告媒体流转发的状态。
- 若回调返回
RELAY_STATE_RUNNING(2)和RELAY_OK(0),表示 SDK 成功开始将媒体流从源频道转发到目标频道。 - 若回调返回
RELAY_STATE_FAILURE(3),表示媒体流转发过程中发生异常。
参数
- channelMediaRelayConfiguration
- 媒体流转发的配置。详见 ChannelMediaRelayConfiguration。
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -8:内部状态错误,可能是因为用户不是主播。
stopChannelMediaRelay
停止跨频道媒体流转发。
Java
public abstract int stopChannelMediaRelay();
调用该方法后,主播会退出所有目标频道。
信息
如果方法调用失败,SDK 会通过 onChannelMediaRelayStateChanged 回调报告
RELAY_ERROR_SERVER_NO_RESPONSE(2)或 RELAY_ERROR_SERVER_CONNECTION_LOST(8)错误码。你也可以调用 leaveChannel 方法离开频道,媒体流转发会自动停止。返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
stopChannelMediaRelayEx
停止跨频道媒体流转发。
Java
public abstract int stopChannelMediaRelayEx(RtcConnection connection);
调用该方法停止跨频道媒体流转发。一旦转发停止,主播会退出所有目标频道。
信息
如果方法调用失败,SDK 会通过 onChannelMediaRelayStateChanged 回调报告
RELAY_ERROR_SERVER_NO_RESPONSE(2)或 RELAY_ERROR_SERVER_CONNECTION_LOST(8)错误码。你可以调用 leaveChannel 方法离开频道,媒体流转发会自动停止。适用场景
该方法适用于多频道场景。
参数
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。
onChannelMediaRelayStateChanged
跨频道媒体流转发状态发生变化回调。
Java
public void onChannelMediaRelayStateChanged(int state, int code)
该回调返回当前跨频道媒体流转发的错误信息。
触发时机
该回调在跨频道媒体流转发状态发生变化时被触发。
参数
- state
- 跨频道媒体流转发的状态码:
RELAY_STATE_IDLE:SDK 正在初始化。RELAY_STATE_CONNECTING:SDK 尝试将媒体流转发到目标频道。RELAY_STATE_RUNNING:SDK 成功将媒体流转发到目标频道。RELAY_STATE_FAILURE:发生错误,详见 code。
- code
- 跨频道媒体流转发的错误码:
RELAY_OK:一切正常。RELAY_ERROR_SERVER_ERROR_RESPONSE:服务器响应出错。RELAY_ERROR_SERVER_NO_RESPONSE:服务器无响应。该错误可能由网络连接不佳引起。如果在启动跨频道媒体流转发时出现该错误,可以稍后重试;如果在转发过程中出现该错误,可以调用leaveChannel离开频道。该错误也可能是项目未启用跨频道媒体流转发服务导致的。你可以联系技术支持启用该服务。RELAY_ERROR_NO_RESOURCE_AVAILABLE:SDK 无法访问服务,可能由于服务器资源有限。RELAY_ERROR_FAILED_JOIN_SRC:服务器无法发送转发请求。RELAY_ERROR_FAILED_JOIN_DEST:服务器无法接受转发请求。RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC:服务器无法接收媒体流。RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST:服务器无法发送媒体流。RELAY_ERROR_SERVER_CONNECTION_LOST:由于网络连接不佳,SDK 与服务器断开连接。你可以调用leaveChannel离开频道。RELAY_ERROR_INTERNAL_ERROR:服务器内部发生错误。RELAY_ERROR_SRC_TOKEN_EXPIRED:源频道的 Token 已过期。RELAY_ERROR_DEST_TOKEN_EXPIRED:目标频道的 Token 已过期。