# 跨频道媒体流转发 (/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_channel_media_relay"></a>

<a id="api_irtcengine_pauseallchannelmediarelay"></a>

<a id="ariaid-title2"></a>

## pauseAllChannelMediaRelay [#pauseallchannelmediarelay]

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

<a id="api_irtcengine_pauseallchannelmediarelay__prototype"></a>

```cpp
virtual int pauseAllChannelMediaRelay() = 0;
```

<a id="api_irtcengine_pauseallchannelmediarelay__detailed_desc"></a>

### 详情 [#详情]

开始跨频道转发媒体流后，如果你需要暂停向所有频道转发媒体流，可以调用该方法；暂停后，如果要恢复跨频道媒体流转发，可以调用 [resumeAllChannelMediaRelay](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengine_resumeallchannelmediarelay) 方法。

:::caution
注意： 该方法需要在调用 [startOrUpdateChannelMediaRelay](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengine_startorupdatechannelmediarelay) 开始跨频道媒体流转发后调用。
:::

<a id="api_irtcengine_pauseallchannelmediarelay__return_values"></a>

### 返回值 [#返回值]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_pauseallchannelmediarelayex"></a>

<a id="ariaid-title3"></a>

## pauseAllChannelMediaRelayEx [#pauseallchannelmediarelayex]

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

<a id="api_irtcengineex_pauseallchannelmediarelayex__prototype"></a>

```cpp
virtual int pauseAllChannelMediaRelayEx(const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_pauseallchannelmediarelayex__detailed_desc"></a>

### 详情 [#详情-1]

开始跨频道转发媒体流后，如果你需要暂停向所有频道转发媒体流，可以调用该方法；暂停后，如果要恢复跨频道媒体流转发，可以调用 [resumeAllChannelMediaRelay](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengine_resumeallchannelmediarelay) 方法。

:::caution
注意： 该方法需要在调用 [startOrUpdateChannelMediaRelayEx](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengineex_startorupdatechannelmediarelayex) 开始跨频道媒体流转发后调用。
:::

<a id="api_irtcengineex_pauseallchannelmediarelayex__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="connection"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/unreal-cpp/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_pauseallchannelmediarelayex__return_values"></a>

### 返回值 [#返回值-1]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-1]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_resumeallchannelmediarelay"></a>

<a id="ariaid-title4"></a>

## resumeAllChannelMediaRelay [#resumeallchannelmediarelay]

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

<a id="api_irtcengine_resumeallchannelmediarelay__prototype"></a>

```cpp
virtual int resumeAllChannelMediaRelay() = 0;
```

<a id="api_irtcengine_resumeallchannelmediarelay__detailed_desc"></a>

### 详情 [#详情-2]

调用 [pauseAllChannelMediaRelay](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengine_pauseallchannelmediarelay) 方法后，如果你需要恢复向所有目标频道转发媒体流，可以调用该方法。

:::caution
注意： 该方法需要在 [pauseAllChannelMediaRelay](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengine_pauseallchannelmediarelay) 后调用。
:::

<a id="api_irtcengine_resumeallchannelmediarelay__return_values"></a>

### 返回值 [#返回值-2]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-2]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_resumeallchannelmediarelayex"></a>

<a id="ariaid-title5"></a>

## resumeAllChannelMediaRelayEx [#resumeallchannelmediarelayex]

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

<a id="api_irtcengineex_resumeallchannelmediarelayex__prototype"></a>

```cpp
virtual int resumeAllChannelMediaRelayEx(const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_resumeallchannelmediarelayex__detailed_desc"></a>

### 详情 [#详情-3]

调用 [pauseAllChannelMediaRelayEx](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengineex_pauseallchannelmediarelayex) 方法后，如果你需要恢复向所有目标频道转发媒体流，可以调用该方法。

:::caution
注意： 该方法需要在 [pauseAllChannelMediaRelayEx](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#api_irtcengineex_pauseallchannelmediarelayex) 后调用。
:::

<a id="api_irtcengineex_resumeallchannelmediarelayex__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="connection-1"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/unreal-cpp/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_resumeallchannelmediarelayex__return_values"></a>

### 返回值 [#返回值-3]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-3]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_startorupdatechannelmediarelay"></a>

<a id="ariaid-title6"></a>

## startOrUpdateChannelMediaRelay [#startorupdatechannelmediarelay]

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

<a id="api_irtcengine_startorupdatechannelmediarelay__prototype"></a>

```cpp
virtual int startOrUpdateChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
```

<a id="api_irtcengine_startorupdatechannelmediarelay__detailed_desc"></a>

### 详情 [#详情-4]

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

成功调用该方法后，SDK 会触发 [onChannelMediaRelayStateChanged](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#callback_irtcengineeventhandler_onchannelmediarelaystatechanged) 回调，报告当前的跨频道媒体流转发状态。常见状态如下：

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

:::caution
注意：

- 请在成功加入频道后调用该方法。
- 在直播场景中，只有角色为主播的用户才能调用该方法。
- 跨频道媒体流转发功能需要[联系技术支持](https://ticket.shengwang.cn/)开通。
- 该功能不支持 String 型 UID。
:::

<a id="api_irtcengine_startorupdatechannelmediarelay__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="configuration"></a>
<Parameter name="configuration">

跨频道媒体流转发参数配置。详见 [ChannelMediaRelayConfiguration](/zh-CN/api-reference/rtc/unreal-cpp/class-channelmediarelayconfiguration)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_startorupdatechannelmediarelay__return_values"></a>

### 返回值 [#返回值-4]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-4]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_startorupdatechannelmediarelayex"></a>

<a id="ariaid-title7"></a>

## startOrUpdateChannelMediaRelayEx [#startorupdatechannelmediarelayex]

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

<a id="api_irtcengineex_startorupdatechannelmediarelayex__prototype"></a>

```cpp
virtual int startOrUpdateChannelMediaRelayEx(const ChannelMediaRelayConfiguration& configuration, const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_startorupdatechannelmediarelayex__detailed_desc"></a>

### 详情 [#详情-5]

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

成功调用该方法后，SDK 会触发 [onChannelMediaRelayStateChanged](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#callback_irtcengineeventhandler_onchannelmediarelaystatechanged) 回调，报告当前的跨频道媒体流转发状态。常见状态如下：

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

:::caution
注意：

- 请在成功加入频道后调用该方法。
- 在直播场景中，只有角色为主播的用户才能调用该方法。
- 跨频道媒体流转发功能需要[联系技术支持](https://ticket.shengwang.cn/)开通。
- 该功能不支持 String 型 UID。
:::

<a id="api_irtcengineex_startorupdatechannelmediarelayex__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="configuration-1"></a>
<Parameter name="configuration">

跨频道媒体流转发参数配置。详见 [ChannelMediaRelayConfiguration](/zh-CN/api-reference/rtc/unreal-cpp/class-channelmediarelayconfiguration)。

</Parameter>
<a id="connection-2"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/unreal-cpp/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_startorupdatechannelmediarelayex__return_values"></a>

### 返回值 [#返回值-5]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-5]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_stopchannelmediarelay"></a>

<a id="ariaid-title8"></a>

## stopChannelMediaRelay [#stopchannelmediarelay]

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

<a id="api_irtcengine_stopchannelmediarelay__prototype"></a>

```cpp
virtual int stopChannelMediaRelay() = 0;
```

<a id="api_irtcengine_stopchannelmediarelay__detailed_desc"></a>

### 详情 [#详情-6]

成功调用该方法后，SDK 会触发 [onChannelMediaRelayStateChanged](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#callback_irtcengineeventhandler_onchannelmediarelaystatechanged) 回调。如果报告 RELAY_STATE_IDLE (0) 和 RELAY_OK (0)，则表示已停止转发媒体流。

:::caution
注意：
       如果该方法调用不成功，SDK 会触发 onChannelMediaRelayStateChanged 回调，并报告状态码 RELAY_ERROR_SERVER_NO_RESPONSE (2) 或 RELAY_ERROR_SERVER_CONNECTION_LOST (8)。你可以调用 [leaveChannel [2/2]](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengine_leavechannel2) 方法离开频道，跨频道媒体流转发会自动停止。
:::

<a id="api_irtcengine_stopchannelmediarelay__return_values"></a>

### 返回值 [#返回值-6]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-6]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_stopchannelmediarelayex"></a>

<a id="ariaid-title9"></a>

## stopChannelMediaRelayEx [#stopchannelmediarelayex]

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

<a id="api_irtcengineex_stopchannelmediarelayex__prototype"></a>

```cpp
virtual int stopChannelMediaRelayEx(const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_stopchannelmediarelayex__detailed_desc"></a>

### 详情 [#详情-7]

成功调用该方法后，SDK 会触发 [onChannelMediaRelayStateChanged](/zh-CN/api-reference/rtc/unreal-cpp/cloud-media-relay/channel-media-relay#callback_irtcengineeventhandler_onchannelmediarelaystatechanged) 回调。如果报告 RELAY_STATE_IDLE (0) 和 RELAY_OK (0)，则表示已停止转发媒体流。

:::caution
注意：
       如果该方法调用不成功，SDK 会触发 onChannelMediaRelayStateChanged 回调，并报告状态码 RELAY_ERROR_SERVER_NO_RESPONSE (2) 或 RELAY_ERROR_SERVER_CONNECTION_LOST (8)。你可以调用 [leaveChannel [2/2]](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengine_leavechannel2) 方法离开频道，跨频道媒体流转发会自动停止。
:::

<a id="api_irtcengineex_stopchannelmediarelayex__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="connection-3"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/unreal-cpp/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_stopchannelmediarelayex__return_values"></a>

### 返回值 [#返回值-7]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

### 所属接口类 [#所属接口类-7]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengineex)

<a id="callback_irtcengineeventhandler_onchannelmediarelaystatechanged"></a>

<a id="ariaid-title10"></a>

## onChannelMediaRelayStateChanged [#onchannelmediarelaystatechanged]

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

<a id="callback_irtcengineeventhandler_onchannelmediarelaystatechanged__prototype"></a>

```cpp
virtual void onChannelMediaRelayStateChanged(CHANNEL_MEDIA_RELAY_STATE state,CHANNEL_MEDIA_RELAY_ERROR code) {
    }
```

<a id="callback_irtcengineeventhandler_onchannelmediarelaystatechanged__detailed_desc"></a>

### 详情 [#详情-8]

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

<a id="callback_irtcengineeventhandler_onchannelmediarelaystatechanged__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="state"></a>
<Parameter name="state">

跨频道媒体流转发状态。详见 [CHANNEL_MEDIA_RELAY_STATE](/zh-CN/api-reference/rtc/unreal-cpp/enum-channelmediarelaystate)。

</Parameter>
<a id="code"></a>
<Parameter name="code">

跨频道媒体流转发出错的错误码。详见 [CHANNEL_MEDIA_RELAY_ERROR](/zh-CN/api-reference/rtc/unreal-cpp/enum-channelmediarelayerror)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-8]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengineeventhandler)
