跨频道媒体流转发

  • Android

更新时间不可用

pauseAllChannelMediaRelay

暂停向所有目标频道的跨频道媒体流转发。

Java
public abstract int pauseAllChannelMediaRelay();

你可以调用该方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 resumeAllChannelMediaRelay 方法。

注: 请在调用 startOrUpdateChannelMediaRelay 方法之后调用该方法。

返回值

  • 0:方法调用成功。

  • < 0:方法调用失败。详见错误码了解详情和解决建议。

    • -5:调用被拒绝,当前没有正在进行的跨频道媒体流转发。

所属接口类

pauseAllChannelMediaRelayEx

暂停向所有目标频道的跨频道媒体流转发。

Java
public abstract int pauseAllChannelMediaRelayEx(RtcConnection connection);

废弃

自 v4.2.0 版本废弃,请改用 startOrUpdateChannelMediaRelayEx。

你可以调用该方法暂停向所有目标频道转发媒体流。如需恢复转发,请调用 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 已过期。
表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类