跨频道媒体流转发

  • Unreal Blueprint

更新时间不可用

PauseAllChannelMediaRelay

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

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int PauseAllChannelMediaRelay();

详情

开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 ResumeAllChannelMediaRelay 方法。

注意: 该方法需要在调用 StartOrUpdateChannelMediaRelay 开始跨频道媒体流转发后调用。

返回值

  • 0: 方法调用成功。

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

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

所属接口类

PauseAllChannelMediaRelayEx

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

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int PauseAllChannelMediaRelayEx(const FRtcConnection& connection);

详情

开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 ResumeAllChannelMediaRelay 方法。

注意: 该方法需要在调用 StartOrUpdateChannelMediaRelayEx 开始跨频道媒体流转发后调用。

参数

参数名描述
connection

Connection 信息。详见 FUABT_RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。

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

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

所属接口类

ResumeAllChannelMediaRelay

恢复向所有目标频道转发媒体流。

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int ResumeAllChannelMediaRelay();

详情

调用 PauseAllChannelMediaRelay 方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。

注意: 该方法需要在 PauseAllChannelMediaRelay 后调用。

返回值

  • 0:方法调用成功。

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

    • -5: 方法调用被拒绝。当前没有暂停的跨频道媒体流转发。

所属接口类

ResumeAllChannelMediaRelayEx

恢复向所有目标频道转发媒体流。

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int ResumeAllChannelMediaRelayEx(const FRtcConnection& connection);

详情

调用 PauseAllChannelMediaRelayEx 方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。

注意: 该方法需要在 PauseAllChannelMediaRelayEx 后调用。

参数

参数名描述
connection

Connection 信息。详见 FUABT_RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

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

    • -5: 方法调用被拒绝。当前没有暂停的跨频道媒体流转发。

所属接口类

StartOrUpdateChannelMediaRelay

开始或更新跨频道媒体流转发。

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int StartOrUpdateChannelMediaRelay(const FChannelMediaRelayConfiguration& configuration);

详情

首次成功调用该方法将开始跨频道转发媒体流。如需将流转发到多个目标频道,或退出当前的转发频道,可以再次调用该方法添加或移除转发的目标频道。该功能最多支持将媒体流转发至 6 个目标频道。

成功调用该方法后,SDK 会触发 OnChannelMediaRelayStateChanged 回调,报告当前的跨频道媒体流转发状态。常见状态如下:

  • 如果 OnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING (2) 和 RELAY_OK (0), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
  • 如果 OnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE (3), 则表示跨频道媒体流转发出现异常。

注意:

  • 请在成功加入频道后调用该方法。
  • 在直播场景中,只有角色为主播的用户才能调用该方法。
  • 跨频道媒体流转发功能需要联系技术支持开通。
  • 该功能不支持 String 型 UID。

参数

参数名描述
configuration

跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

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

    • -1: 一般性的错误(未明确归类)。
    • -2: 参数无效。
    • -8:内部状态错误。可能因为用户角色不是主播。

所属接口类

StartOrUpdateChannelMediaRelayEx

开始或更新跨频道媒体流转发。

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int StartOrUpdateChannelMediaRelayEx(const FChannelMediaRelayConfiguration& configuration, const FRtcConnection& connection);

详情

首次成功调用该方法将开始跨频道转发媒体流。如需将流转发到多个目标频道,或退出当前的转发频道,可以再次调用该方法添加或移除转发的目标频道。该功能最多支持将媒体流转发至 6 个目标频道。

成功调用该方法后,SDK 会触发 OnChannelMediaRelayStateChanged 回调,报告当前的跨频道媒体流转发状态。常见状态如下:

  • 如果 OnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING (2) 和 RELAY_OK (0), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
  • 如果 OnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE (3), 则表示跨频道媒体流转发出现异常。

注意:

  • 请在成功加入频道后调用该方法。
  • 在直播场景中,只有角色为主播的用户才能调用该方法。
  • 跨频道媒体流转发功能需要联系技术支持开通。
  • 该功能不支持 String 型 UID。

参数

参数名描述
configuration

跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration。

connection

Connection 信息。详见 FUABT_RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

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

    • -1: 一般性的错误(未明确归类)。
    • -2: 参数无效。
    • -8:内部状态错误。可能因为用户角色不是主播。

所属接口类

StopChannelMediaRelay

停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int StopChannelMediaRelay();

详情

成功调用该方法后,SDK 会触发 OnChannelMediaRelayStateChanged 回调。如果报告 RELAY_STATE_IDLE (0) 和 RELAY_OK (0),则表示已停止转发媒体流。

注意: 如果该方法调用不成功,SDK 会触发 OnChannelMediaRelayStateChanged 回调,并报告状态码 RELAY_ERROR_SERVER_NO_RESPONSE (2) 或 RELAY_ERROR_SERVER_CONNECTION_LOST (8)。你可以调用 LeaveChannelWithOptions 方法离开频道,跨频道媒体流转发会自动停止。

返回值

  • 0:方法调用成功。

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

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

所属接口类

StopChannelMediaRelayEx

停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。

C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int StopChannelMediaRelayEx(const FRtcConnection& connection);

详情

成功调用该方法后,SDK 会触发 OnChannelMediaRelayStateChanged 回调。如果报告 RELAY_STATE_IDLE (0) 和 RELAY_OK (0),则表示已停止转发媒体流。

注意: 如果该方法调用不成功,SDK 会触发 OnChannelMediaRelayStateChanged 回调,并报告状态码 RELAY_ERROR_SERVER_NO_RESPONSE (2) 或 RELAY_ERROR_SERVER_CONNECTION_LOST (8)。你可以调用 LeaveChannelWithOptions 方法离开频道,跨频道媒体流转发会自动停止。

参数

参数名描述
connection

Connection 信息。详见 FUABT_RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

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

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

所属接口类

OnChannelMediaRelayStateChanged

跨频道媒体流转发状态发生改变回调。

C++
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnChannelMediaRelayStateChanged(int state, int code);

详情

当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。

参数

参数名描述
state

跨频道媒体流转发状态:

  • RELAY_STATE_IDLE (0):SDK 正在初始化。
  • RELAY_STATE_CONNECTING (1):SDK 尝试跨频道。
  • RELAY_STATE_RUNNING (2):源频道主播成功加入目标频道。
  • RELAY_STATE_FAILURE (3):发生异常,详见 code 中提示的错误信息。
code

跨频道媒体流转发出错的错误码:

  • RELAY_OK (0):一切正常。
  • RELAY_ERROR_SERVER_ERROR_RESPONSE (1):服务器回应出错。
  • RELAY_ERROR_SERVER_NO_RESPONSE (2):服务器无回应。该错误可能是网络状况不佳导致的。如果在发起跨频道连麦时报告该错误,你可以稍后重试;如果在跨频道连麦过程中报告该错误,你可以调用 LeaveChannelWithOptions 方法离开频道。该错误也可能是由于当前的 App ID 未开启跨频道连麦服务导致的。你可以联系技术支持申请开通跨频道连麦服务。
  • RELAY_ERROR_NO_RESOURCE_AVAILABLE (3):SDK 无法获取服务,可能是因为服务器资源有限导致。
  • RELAY_ERROR_FAILED_JOIN_SRC (4):发起跨频道转发媒体流请求失败。
  • RELAY_ERROR_FAILED_JOIN_DEST (5):接受跨频道转发媒体流请求失败。
  • RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC (6):服务器接收跨频道转发媒体流失败。
  • RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST (7):服务器发送跨频道转发媒体流失败。
  • RELAY_ERROR_SERVER_CONNECTION_LOST (8):SDK 因网络质量不佳与服务器断开。你可以调用 LeaveChannelWithOptions 方法离开当前频道。
  • RELAY_ERROR_INTERNAL_ERROR (9):服务器内部出错。
  • RELAY_ERROR_SRC_TOKEN_EXPIRED (10):源频道的 Token 已过期。
  • RELAY_ERROR_DEST_TOKEN_EXPIRED (11):目标频道的 Token 已过期。
表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类