# ChannelMediaOptions (/zh-CN/api-reference/rtc/unreal-cpp/class-channelmediaoptions)

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

<a id="class_channelmediaoptions__prototype"></a>

```cpp
struct ChannelMediaOptions {
  Optional<bool> publishCameraTrack;
  Optional<bool> publishSecondaryCameraTrack;
  Optional<bool> publishThirdCameraTrack;
  Optional<bool> publishFourthCameraTrack;
  Optional<bool> publishMicrophoneTrack;

  #if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
  Optional<bool> publishScreenCaptureVideo;
  Optional<bool> publishScreenCaptureAudio;
  #else
  Optional<bool> publishScreenTrack;
  Optional<bool> publishSecondaryScreenTrack;
  Optional<bool> publishThirdScreenTrack;
  Optional<bool> publishFourthScreenTrack;
  #endif

  Optional<bool> publishCustomAudioTrack;
  Optional<int> publishCustomAudioTrackId;
  Optional<bool> publishCustomVideoTrack;
  Optional<bool> publishEncodedVideoTrack;
  Optional<bool> publishMediaPlayerAudioTrack;
  Optional<bool> publishMediaPlayerVideoTrack;
  Optional<bool> publishTranscodedVideoTrack;
  Optional<bool> publishMixedAudioTrack;
  Optional<bool> autoSubscribeAudio;
  Optional<bool> autoSubscribeVideo;
  Optional<bool> enableAudioRecordingOrPlayout;
  Optional<int> publishMediaPlayerId;
  Optional<CLIENT_ROLE_TYPE> clientRoleType;
  Optional<AUDIENCE_LATENCY_LEVEL_TYPE> audienceLatencyLevel;
  Optional<VIDEO_STREAM_TYPE> defaultVideoStreamType;
  Optional<CHANNEL_PROFILE_TYPE> channelProfile;
  Optional<const char*> token;
  Optional<bool> enableBuiltInMediaEncryption;
  Optional<bool> publishRhythmPlayerTrack;
  Optional<bool> isInteractiveAudience;

  Optional<video_track_id_t> customVideoTrackId;

  Optional<bool> isAudioFilterable;

  ChannelMediaOptions() {}
  ~ChannelMediaOptions() {}
            }
```

<a id="class_channelmediaoptions__detailed_desc"></a>

### 详情 [#详情]

SDK 支持在同一时间、同一 [RtcConnection](/zh-CN/api-reference/rtc/unreal-cpp/class-rtcconnection) 中发布多路音频流、一路视频流。例如，publishMicrophoneTrack、publishCustomAudioTrack 和 publishMediaPlayerAudioTrack 可以同时为 `true`； publishCameraTrack、publishScreenCaptureVideo、publishScreenTrack、publishCustomVideoTrack 或 publishEncodedVideoTrack 之中同一时间只能有一个为 `true`。

<a id="class_channelmediaoptions__note"></a>

:::caution
注意： 建议你根据业务场景自行设置成员参数值，否则 SDK 会自动对成员参数进行赋值。
:::

<a id="class_channelmediaoptions__parameters"></a>

## 属性 [#属性]

<ParameterList>
<a id="publishcameratrack"></a>
<Parameter name="publishCameraTrack">

设置是否发布摄像头采集的视频：

<a id="class_channelmediaoptions__ul_vx5_np5_3qb"></a>

- `true`：发布摄像头采集的视频。
- `false`：不发布摄像头采集的视频。

</Parameter>
<a id="publishsecondarycameratrack"></a>
<Parameter name="publishSecondaryCameraTrack">

设置是否发布第二个摄像头采集的视频：

- `true`：发布第二个摄像头采集的视频。
- `false`：不发布第二个摄像头采集的视频。

</Parameter>
<a id="publishmicrophonetrack"></a>
<Parameter name="publishMicrophoneTrack">

设置是否发布麦克风采集到的音频：

- `true`：发布麦克风采集到的音频。
- `false`：不发布麦克风采集到的音频。

:::note
注：

- 如果你将该参数设为 `false`，SDK 也会关闭麦克风采集。
- 如果你想要发布麦克风采集到的音频流，请确保 enableAudioRecordingOrPlayout 设为 `true`。
:::

</Parameter>
<a id="publishthirdcameratrack"></a>
<Parameter name="publishThirdCameraTrack">

设置是否发布第三个摄像头采集的视频：

- `true`：发布第三个摄像头采集的视频。
- `false`：不发布第三个摄像头采集的视频。

:::caution
注意： 该参数仅适用于 Android、Windows 和 macOS 平台。
:::

</Parameter>
<a id="publishfourthcameratrack"></a>
<Parameter name="publishFourthCameraTrack">

设置是否发布第四个摄像头采集的视频：

- `true`：发布第四个摄像头采集的视频。
- `false`：不发布第四个摄像头采集的视频。

:::caution
注意： 该参数仅适用于 Android、Windows 和 macOS 平台。
:::

</Parameter>
<a id="publishscreentrack"></a>
<Parameter name="publishScreenTrack">

设置是否发布屏幕采集的视频：

- `true`：发布屏幕采集到的视频。
- `false`：不发布屏幕采集到的视频。

:::caution
注意： 该参数仅适用于 Windows 和 macOS 平台。
:::

</Parameter>
<a id="publishscreencapturevideo"></a>
<Parameter name="publishScreenCaptureVideo">

设置是否发布屏幕采集的视频：

- `true`：发布屏幕采集到的视频。
- `false`：不发布屏幕采集到的视频。

:::caution
注意： 该参数仅适用于 Android 和 iOS 平台。
:::

</Parameter>
<a id="publishscreencaptureaudio"></a>
<Parameter name="publishScreenCaptureAudio">

设置是否发布屏幕采集的音频：

- `true`：发布屏幕采集到的音频。
- `false`：不发布屏幕采集到的音频。

:::caution
注意： 该参数仅适用于 Android 和 iOS 平台。
:::

</Parameter>
<a id="publishsecondaryscreentrack"></a>
<Parameter name="publishSecondaryScreenTrack">

设置是否发布第二个屏幕采集的视频：

- `true`：发布第二个屏幕采集到的视频。
- `false`：不发布第二个屏幕采集到的视频。

</Parameter>
<a id="publishthirdscreentrack"></a>
<Parameter name="publishThirdScreenTrack">

设置是否发布第三个屏幕采集的视频：

- `true`：发布第三个屏幕采集到的视频。
- `false`：不发布第三个屏幕采集到的视频。

:::caution
注意： 该参数仅适用于 Windows 和 macOS 平台。
:::

</Parameter>
<a id="publishfourthscreentrack"></a>
<Parameter name="publishFourthScreenTrack">

设置是否发布第四个屏幕采集的视频：

- `true`：发布第四个屏幕采集到的视频。
- `false`：不发布第四个屏幕采集到的视频。

:::caution
注意： 该参数仅适用于 Windows 和 macOS 平台。
:::

</Parameter>
<a id="publishtranscodedvideotrack"></a>
<Parameter name="publishTranscodedVideoTrack">

设置是否发布本地的转码视频：

- `true`：发布本地的转码视频。
- `false`：不发布本地的转码视频。

</Parameter>
<a id="publishmixedaudiotrack"></a>
<Parameter name="publishMixedAudioTrack">

设置是否发布本地混音音频：

- `true`：发布本地混音音频。
- `false`：不发布本地混音音频。

</Parameter>
<a id="publishcustomaudiotrack"></a>
<Parameter name="publishCustomAudioTrack">

设置是否发布自定义采集的音频：

- `true`：发布自定义采集到的音频。
- `false`：不发布自定义采集到的音频。

</Parameter>
<a id="publishcustomaudiotrackid"></a>
<Parameter name="publishCustomAudioTrackId">

待发布的自定义音频轨道的 ID，默认值为 0。你可以通过 [createCustomAudioTrack](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-custom-capturenrendering#api_imediaengine_createcustomaudiotrack) 方法来获取自定义音频轨道 ID。

</Parameter>
<a id="publishcustomvideotrack"></a>
<Parameter name="publishCustomVideoTrack">

设置是否发布自定义采集的视频：

- `true`：发布自定义采集的视频。
- `false`：不发布自定义采集到的视频。

</Parameter>
<a id="publishencodedvideotrack"></a>
<Parameter name="publishEncodedVideoTrack">

设置是否发布编码后的视频：

<a id="class_channelmediaoptions__ul_ljg_4q5_3qb"></a>

- `true`：发布编码后的视频。
- `false`：不发布编码后的视频。

</Parameter>
<a id="publishmediaplayeraudiotrack"></a>
<Parameter name="publishMediaPlayerAudioTrack">

设置是否发布媒体播放器的音频：

<a id="class_channelmediaoptions__ul_gr3_rq5_3qb"></a>

- `true`：发布媒体播放器的音频。
- `false`：不发布媒体播放器的音频。

</Parameter>
<a id="publishmediaplayervideotrack"></a>
<Parameter name="publishMediaPlayerVideoTrack">

设置是否发布媒体播放器的视频：

<a id="class_channelmediaoptions__ul_gtd_tq5_3qb"></a>

- `true`：发布媒体播放器的视频。
- `false`：不发布媒体播放器的视频。

</Parameter>
<a id="autosubscribeaudio"></a>
<Parameter name="autoSubscribeAudio">

设置是否自动订阅所有音频流：

<a id="class_channelmediaoptions__ul_gxf_vq5_3qb"></a>

- `true`：自动订阅所有音频流。
- `false`：不自动订阅任何音频流。

</Parameter>
<a id="autosubscribevideo"></a>
<Parameter name="autoSubscribeVideo">

设置是否自动订阅所有视频流：

<a id="class_channelmediaoptions__ul_gfh_xq5_3qb"></a>

- `true`：自动订阅所有视频流。
- `false`：不自动订阅任何视频流。

</Parameter>
<a id="enableaudiorecordingorplayout"></a>
<Parameter name="enableAudioRecordingOrPlayout">

设置是否开启音频录制或播放：

- `true`：开启音频录制或播放。
- `false`：不开启音频录制或播放。

:::note
注： 如果那你需要发布麦克风采集的音频流，请确保该参数设为 `true`。
:::

</Parameter>
<a id="publishmediaplayerid"></a>
<Parameter name="publishMediaPlayerId">

待发布的媒体播放器的 ID。默认值为 0。

</Parameter>
<a id="clientroletype"></a>
<Parameter name="clientRoleType">

用户角色。详见 [CLIENT_ROLE_TYPE](/zh-CN/api-reference/rtc/unreal-cpp/enum-clientroletype)。

:::note
注： 角色为观众的用户无法在频道内发布音视频流。在直播场景下发流时，请确保你的用户角色已切换为主播。
:::

</Parameter>
<a id="audiencelatencylevel"></a>
<Parameter name="audienceLatencyLevel">

观众端延时级别。详见 [AUDIENCE_LATENCY_LEVEL_TYPE](/zh-CN/api-reference/rtc/unreal-cpp/enum-audiencelatencyleveltype)。

</Parameter>
<a id="defaultvideostreamtype"></a>
<Parameter name="defaultVideoStreamType">

默认订阅的视频流类型: [VIDEO_STREAM_TYPE](/zh-CN/api-reference/rtc/unreal-cpp/enum-videostreamtype)。

</Parameter>
<a id="channelprofile"></a>
<Parameter name="channelProfile">

频道使用场景。详见 [CHANNEL_PROFILE_TYPE](/zh-CN/api-reference/rtc/unreal-cpp/enum-channelprofiletype)。

</Parameter>
<a id="audiodelayms"></a>
<Parameter name="audioDelayMs">

发送音频帧的延时（毫秒）。你可以通过该参数来设置需要发送的音频帧的延时，以确保音画同步。

如果要关闭延时，将此参数值设置为 0。

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

（可选）在服务端生成的用于鉴权的动态密钥。详见[使用 Token 鉴权](/zh-CN/realtime-media/rtc/build/setup-and-access/token-authentication)。

:::caution
注意：

- 该参数仅在调用 [updateChannelMediaOptions](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengine_updatechannelmediaoptions) 或 [updateChannelMediaOptionsEx](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengineex_updatechannelmediaoptionsex) 时生效。
- 请确保用于生成 token 的 App ID、频道名和用户名和 [initialize](/zh-CN/api-reference/rtc/unreal-cpp/initialize#api_irtcengine_initialize) 方法初始化引擎时用的 App ID，以及 [joinChannel [2/2]](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengine_joinchannel2) 或 [joinChannelEx](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengineex_joinchannelex) 方法加入频道时设置的频道名和用户名是一致的。
:::

</Parameter>
<a id="publishrhythmplayertrack"></a>
<Parameter name="publishRhythmPlayerTrack">

设置是否发布虚拟节拍器声音至远端：

- `true`：发布。本地用户和远端用户都能听到节拍器。
- `false`：不发布。只有本地用户能听到节拍器。

</Parameter>
<a id="isinteractiveaudience"></a>
<Parameter name="isInteractiveAudience">

是否开启互动观众模式：

- `true`：开启互动观众模式。成功开启后，本地用户作为互动观众，收到低延时和流畅的远端用户视频。
- `false`：不开启互动观众模式。本地用户作为普通观众，收到默认设置的远端用户视频。

:::caution
注意：

- 该参数用于实现跨直播间连麦场景。连麦主播需要调用 [joinChannelEx](/zh-CN/api-reference/rtc/unreal-cpp/channel#api_irtcengineex_joinchannelex) 方法，以观众身份加入对方的直播间，并将 isInteractiveAudience 设置为 `true`。
- 仅当用户角色为 CLIENT_ROLE_AUDIENCE 时，该参数生效。
:::

</Parameter>
<a id="customvideotrackid"></a>
<Parameter name="customVideoTrackId">

调用 [createCustomVideoTrack](/zh-CN/api-reference/rtc/unreal-cpp/video/video-custom-capturenrendering#api_irtcengine_createcustomvideotrack) 方法返回的视频轨道 ID。默认值为 0。

</Parameter>
<a id="isaudiofilterable"></a>
<Parameter name="isAudioFilterable">

设置是否让当前音频流根据音强算法参与选流。

- `true`：参与音强选流。如未开启音强选流功能，该参数不会生效。
- `false`：不参与音强选流。

:::caution
注意： 如需启用该功能，请[联系销售](https://www.shengwang.cn/contact-sales/)。
:::

</Parameter>
</ParameterList>
