跨频道媒体流转发
PauseAllChannelMediaRelay
暂停向所有目标频道转发媒体流。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int PauseAllChannelMediaRelay();
详情
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 ResumeAllChannelMediaRelay 方法。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
PauseAllChannelMediaRelayEx
暂停向所有目标频道转发媒体流。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int PauseAllChannelMediaRelayEx(const FRtcConnection& connection);
详情
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 ResumeAllChannelMediaRelay 方法。
参数
- connection
- Connection 信息。详见 FRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
ResumeAllChannelMediaRelay
恢复向所有目标频道转发媒体流。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int ResumeAllChannelMediaRelay();
详情
调用 PauseAllChannelMediaRelay 方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
ResumeAllChannelMediaRelayEx
恢复向所有目标频道转发媒体流。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int ResumeAllChannelMediaRelayEx(const FRtcConnection& connection);
详情
调用 PauseAllChannelMediaRelayEx 方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
参数
- connection
- Connection 信息。详见 FRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
StartChannelMediaRelay
开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int StartChannelMediaRelay(const FChannelMediaRelayConfiguration& configuration) __deprecated;
详情
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING (2) 和 RELAY_OK (0),且 FOnChannelMediaRelayEvent 回调报告 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL (4), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE (3), 则表示跨频道媒体流转发出现异常。
- 请在成功加入频道后调用该方法。
- 在直播场景中,只有角色为主播的用户才能调用该方法。
- 成功调用该方法后,若你想再次调用该方法,必须先调用 StopChannelMediaRelay 方法退出当前的转发状态。
- 跨频道媒体流转发功能需要联系技术支持开通。
- 该功能不支持 String 型 UID。
参数
- configuration
- 跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
- -1: 一般性的错误(未明确归类)。
- -2: 参数无效。
- -7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
- -8:内部状态错误。可能因为用户角色不是主播。
StartChannelMediaRelayEx
开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int StartChannelMediaRelayEx(const FChannelMediaRelayConfiguration& configuration, const FRtcConnection& connection);
详情
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING (2) 和 RELAY_OK (0),且 FOnChannelMediaRelayEvent 回调报告 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL (4), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE (3), 则表示跨频道媒体流转发出现异常。
- 请在成功加入频道后调用该方法。
- 在直播场景中,只有角色为主播的用户才能调用该方法。
- 成功调用该方法后,若你想再次调用该方法,必须先调用 StopChannelMediaRelayEx 方法退出当前的转发状态。
- 跨频道媒体流转发功能需要联系技术支持开通。
- 该功能不支持 String 型 UID。
参数
- configuration
- 跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration。
- connection
- Connection 信息。详见 FRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
- -1: 一般性的错误(未明确归类)。
- -2: 参数无效。
- -7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
- -8:内部状态错误。可能因为用户角色不是主播。
StartOrUpdateChannelMediaRelay
开始或更新跨频道媒体流转发。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int StartOrUpdateChannelMediaRelay(const FChannelMediaRelayConfiguration& configuration);
详情
首次成功调用该方法将开始跨频道转发媒体流。如需将流转发到多个目标频道,或退出当前的转发频道,可以再次调用该方法添加或移除转发的目标频道。该功能最多支持将媒体流转发至 6 个目标频道。
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING (2) 和 RELAY_OK (0), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE (3), 则表示跨频道媒体流转发出现异常。
- 请在成功加入频道后调用该方法。
- 在直播场景中,只有角色为主播的用户才能调用该方法。
- 跨频道媒体流转发功能需要联系技术支持开通。
- 该功能不支持 String 型 UID。
参数
- configuration
- 跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1: 一般性的错误(未明确归类)。
- -2: 参数无效。
- -7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
- -8:内部状态错误。可能因为用户角色不是主播。
StartOrUpdateChannelMediaRelayEx
开始或更新跨频道媒体流转发。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int StartOrUpdateChannelMediaRelayEx(const FChannelMediaRelayConfiguration& configuration, const FRtcConnection& connection);
详情
首次成功调用该方法将开始跨频道转发媒体流。如需将流转发到多个目标频道,或退出当前的转发频道,可以再次调用该方法添加或移除转发的目标频道。该功能最多支持将媒体流转发至 6 个目标频道。
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING (2) 和 RELAY_OK (0), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
- 如果 FOnChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE (3), 则表示跨频道媒体流转发出现异常。
- 请在成功加入频道后调用该方法。
- 在直播场景中,只有角色为主播的用户才能调用该方法。
- 跨频道媒体流转发功能需要联系技术支持开通。
- 该功能不支持 String 型 UID。
参数
- configuration
- 跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration。
- connection
- Connection 信息。详见 FRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1: 一般性的错误(未明确归类)。
- -2: 参数无效。
- -7: 方法调用被拒绝。可能因为 SDK 未初始化成功,或用户角色不是主播。
- -8:内部状态错误。可能因为用户角色不是主播。
StopChannelMediaRelay
停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int StopChannelMediaRelay();
详情
成功调用该方法后,SDK 会触发 FOnChannelMediaRelayStateChanged 回调。如果报告 RELAY_STATE_IDLE (0) 和 RELAY_OK (0),则表示已停止转发媒体流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
StopChannelMediaRelayEx
停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int StopChannelMediaRelayEx(const FRtcConnection& connection);
详情
成功调用该方法后,SDK 会触发 FOnChannelMediaRelayStateChanged 回调。如果报告 RELAY_STATE_IDLE (0) 和 RELAY_OK (0),则表示已停止转发媒体流。
参数
- connection
- Connection 信息。详见 FRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
UpdateChannelMediaRelay
更新媒体流转发的频道。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int UpdateChannelMediaRelay(const FChannelMediaRelayConfiguration& configuration) __deprecated;
详情
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 FOnChannelMediaRelayEvent 回调, 并在回调中报告状态码 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL (7)。
(RELAY_STATE_RUNNING, RELAY_OK)
后调用该方法;否则,方法调用会失败。参数
- configuration
- 跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration 。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
UpdateChannelMediaRelayEx
更新媒体流转发的频道。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int UpdateChannelMediaRelayEx(const FChannelMediaRelayConfiguration& configuration, const FRtcConnection& connection);
详情
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 FOnChannelMediaRelayEvent 回调, 并在回调中报告状态码 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL (7)。
(RELAY_STATE_RUNNING, RELAY_OK)
后调用该方法;否则,方法调用会失败。参数
- configuration
- 跨频道媒体流转发参数配置。详见 FChannelMediaRelayConfiguration 。
- connection
- Connection 信息。详见 FRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
FOnChannelMediaRelayEvent
跨频道媒体流转发事件回调。
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnChannelMediaRelayEvent, int, code);
详情
参数
- code
- 跨频道媒体流转发事件码:
- RELAY_EVENT_NETWORK_DISCONNECTED(0):网络中断导致用户与服务器连接断开。
- RELAY_EVENT_NETWORK_CONNECTED(1):用户与服务器建立连接。
- RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL(2):用户已加入源频道。
- RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL(3):用户已加入目标频道。
- RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL(4):SDK 开始向目标频道发送数据包。
- RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC(5):服务器收到了目标频道发送的视频流。
- RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC(6):服务器收到了目标频道发送的音频流
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL(7):目标频道已更新。
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE(9):目标频道未发生改变,即目标频道更新失败。
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL(10):目标频道名为
NULL
。 - RELAY_EVENT_VIDEO_PROFILE_UPDATE(11):视频属性已发送至服务器。
- RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS(12):暂停向目标频道转发媒体流成功。
- RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED(13):暂停向目标频道转发媒体流失败。
- RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS(14):恢复向目标频道转发媒体流成功。
- RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED(15):恢复向目标频道转发媒体流失败。
FOnChannelMediaRelayStateChanged
跨频道媒体流转发状态发生改变回调。
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnChannelMediaRelayStateChanged, 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):服务器无回应。该错误可能是网络状况不佳导致的。如果在发起跨频道连麦时报告该错误,你可以稍后重试;如果在跨频道连麦过程中报告该错误,你可以调用 LeaveChannel 方法离开频道。该错误也可能是由于当前的 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 因网络质量不佳与服务器断开。你可以调用 LeaveChannel 方法离开当前频道。
- RELAY_ERROR_INTERNAL_ERROR (9):服务器内部出错。
- RELAY_ERROR_SRC_TOKEN_EXPIRED (10):源频道的 Token 已过期。
- RELAY_ERROR_DEST_TOKEN_EXPIRED (11):目标频道的 Token 已过期。