# ChannelMediaOptions (/zh-CN/api-reference/rtc/cpp-all-platforms/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) || defined(TARGET_OS_MAC) || defined(__OHOS__)
  Optional<bool> publishScreenCaptureAudio;
#endif
#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(__OHOS__)
  Optional<bool> publishScreenCaptureVideo;
#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> publishLipSyncTrack;
  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<int> audioDelayMs;
  Optional<int> mediaPlayerAudioDelayMs;
  Optional<const char*> token;
  Optional<bool> enableBuiltInMediaEncryption;
  Optional<bool> publishRhythmPlayerTrack;
  Optional<bool> isInteractiveAudience;
  Optional<video_track_id_t> customVideoTrackId;
  Optional<bool> isAudioFilterable;
  Optional<const char*> parameters;
  Optional<bool> enableMultipath;
  Optional<MultipathMode> uplinkMultipathMode;
  Optional<MultipathMode> downlinkMultipathMode;
  Optional<MultipathType> preferMultipathType;
};
```

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

声网支持在同一个 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection) 中同时发布多个音频流和一个视频流。例如，可以同时将 `publishMicrophoneTrack`、`publishCustomAudioTrack` 和 `publishMediaPlayerAudioTrack` 设置为 true，但 `publishCameraTrack`、`publishScreenCaptureVideo`、`publishScreenTrack`、`publishCustomVideoTrack` 或 `publishEncodedVideoTrack` 中只能有一个设置为 true。

:::note
注： 声网建议你根据业务场景自行设置成员参数值，否则 SDK 会自动为成员参数分配值。
:::

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

## 属性 [#属性]

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

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

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

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

是否发布第二路摄像头采集的视频：

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

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

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

是否发布第三路摄像头采集的视频：

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

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

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

是否发布第四路摄像头采集的视频：

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

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

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

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

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

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

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

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

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

是否发布屏幕采集器的音频轨道：

- true：发布屏幕采集器的音频。
- false：（默认）不发布屏幕采集器的音频轨道。

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

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

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

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

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

是否发布第二块屏幕采集的视频：

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

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

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

是否发布第三块屏幕采集的视频：

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

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

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

是否发布第四块屏幕采集的视频：

- `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/cpp-all-platforms/audio/audio-custom-capturenrendering#api_imediaengine_createcustomaudiotrack_imediaengine) 获取自定义音频轨道 ID。

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

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

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

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

是否发布编码后的视频：

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

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

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

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

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

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

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

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

:::note
注： 自 v4.2.0 起，参数名从 `publishTrancodedVideoTrack` 更正为 `publishTranscodedVideoTrack`。
:::

是否发布本地合图视频：

- `true`：发布本地合图视频。
- `false`：不发布本地合图视频。

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

是否发布混音音频轨道：

- `true`：发布混音音频轨道。
- `false`：不发布混音音频轨道。

</Parameter>
<a id="publishlipsynctrack"></a>
<Parameter name="publishLipSyncTrack">

是否发布由语音驱动扩展处理后的视频轨道：

- `true`：发布由语音驱动扩展处理后的视频轨道。
- `false`：（默认）不发布由语音驱动扩展处理后的视频轨道。

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

用户加入频道时，是否自动订阅所有远端音频流：

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

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

用户加入频道时，是否自动订阅所有远端视频流：

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

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

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

是否启用音频采集或播放：

- `true`：启用音频采集或播放。
- `false`：不启用音频采集或播放。

</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/cpp-all-platforms/enum-clientroletype)。

:::note
注： 如果将用户角色设置为观众，则无法在频道中发布音视频流。如果你希望在直播中发布媒体流，请确保将用户角色设置为主播。
:::

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

互动直播中观众的延迟等级。详见 [AUDIENCE_LATENCY_LEVEL_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-audiencelatencyleveltype)。

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

默认的视频流类型。详见 [VIDEO_STREAM_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-videostreamtype)。

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

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

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

发送音频帧的延迟（单位为毫秒）。你可以使用该参数设置需要发送的音频帧的延迟，以确保音视频同步。要关闭延迟，请将该值设置为 0。

</Parameter>
<a id="mediaplayeraudiodelayms"></a>
<Parameter name="mediaPlayerAudioDelayMs">

发送媒体播放器音频帧的延迟（单位为毫秒）。用于显式控制音视频同步。要关闭延迟，请将该值设置为 0。

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

（可选）你在服务器上生成的用于鉴权的 Token。

:::note
注：

- 该参数仅在调用 updateChannelMediaOptions 或 updateChannelMediaOptionsEx 时生效。
- 请确保用于生成 Token 的 App ID、频道名和用户名与用于初始化 RTC 引擎的 initialize 方法，以及用于加入频道的 joinChannel 和 joinChannelEx 方法中使用的参数一致。
:::

</Parameter>
<a id="enablebuiltinmediaencryption"></a>
<Parameter name="enableBuiltInMediaEncryption">

:::note
注： 调用 updateChannelMediaOptions 时该参数被忽略。
:::

是否启用媒体包加密：

- `true`：启用。
- `false`：（默认）不启用。

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

是否向远端用户发布节拍器的声音：

- `true`：发布处理后的音频帧，本地用户和远端用户都能听到节拍器。
- `false`：不发布节拍器的声音，只有本地用户能听到节拍器。

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

:::note
注：

- 该参数仅适用于连麦直播场景。联合主播需调用 joinChannelEx 方法以观众身份加入其他主播频道，并将 isInteractiveAudience 设置为 `true`。
- 该参数仅在用户角色为 CLIENT_ROLE_AUDIENCE 时生效。
:::

是否启用互动模式：

- `true`：启用互动模式。
- `false`：不启用互动模式。

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

调用 createCustomVideoTrack 方法返回的视频轨道 ID。默认值为 0。

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

:::note
注： 如需启用该功能，请[联系技术支持](https://ticket.shengwang.cn/)
:::

发布的音频流是否根据音量算法进行过滤：

- `true`：音频流被过滤。如果未启用音频流过滤器，该设置不生效。
- `false`：音频流不被过滤。

</Parameter>
<a id="enablemultipath"></a>
<Parameter name="enableMultipath">

:::note
注： 权限和系统要求：

- Android：Android 7.0 或更高版本（API 级别 24 或更高），需要 ACCESS_NETWORK_STATE 和 CHANGE_NETWORK_STATE 权限。
- iOS：iOS 12.0 或更高版本。
- macOS：10.14 或更高版本。
- Windows：Windows Vista 或更高版本。
:::

是否启用多路径传输：

- `true`：启用多路径传输。
- `false`：禁用多路径传输。

</Parameter>
<a id="prefermultipathtype"></a>
<Parameter name="preferMultipathType">

首选的传输路径类型。详见 [MultipathType](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-multipathtype)。

:::note
注： 使用该参数时，请确保已将 enableMultipath 设置为 `true`。
:::

</Parameter>
</ParameterList>
