# ChannelMediaOptions (/zh-CN/api-reference/rtc/csharp-windows/class-channelmediaoptions)

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

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

```csharp
public class ChannelMediaOptions : OptionalJsonParse
    {
        public Optional<bool> publishCameraTrack = new Optional<bool>();
        public Optional<bool> publishSecondaryCameraTrack = new Optional<bool>();
        public Optional<bool> publishThirdCameraTrack = new Optional<bool>();
        public Optional<bool> publishFourthCameraTrack = new Optional<bool>();
        public Optional<bool> publishMicrophoneTrack = new Optional<bool>();
        public Optional<bool> publishScreenCaptureVideo = new Optional<bool>();
        public Optional<bool> publishScreenCaptureAudio = new Optional<bool>();
        public Optional<bool> publishScreenTrack = new Optional<bool>();
        public Optional<bool> publishSecondaryScreenTrack = new Optional<bool>();
        public Optional<bool> publishThirdScreenTrack = new Optional<bool>();
        public Optional<bool> publishFourthScreenTrack = new Optional<bool>();
        public Optional<bool> publishCustomAudioTrack = new Optional<bool>();
        public Optional<int> publishCustomAudioTrackId = new Optional<int>();
        public Optional<bool> publishCustomVideoTrack = new Optional<bool>();
        public Optional<bool> publishEncodedVideoTrack = new Optional<bool>();
        public Optional<bool> publishMediaPlayerAudioTrack = new Optional<bool>();
        public Optional<bool> publishMediaPlayerVideoTrack = new Optional<bool>();
        public Optional<bool> publishTranscodedVideoTrack = new Optional<bool>();
        public Optional<bool> publishLipSyncTrack = new Optional<bool>();
        public Optional<bool> autoSubscribeAudio = new Optional<bool>();
        public Optional<bool> autoSubscribeVideo = new Optional<bool>();
        public Optional<bool> enableAudioRecordingOrPlayout = new Optional<bool>();
        public Optional<int> publishMediaPlayerId = new Optional<int>();
        public Optional<CLIENT_ROLE_TYPE> clientRoleType = new Optional<CLIENT_ROLE_TYPE>();
        public Optional<AUDIENCE_LATENCY_LEVEL_TYPE> audienceLatencyLevel = new Optional<AUDIENCE_LATENCY_LEVEL_TYPE>();
        public Optional<VIDEO_STREAM_TYPE> defaultVideoStreamType = new Optional<VIDEO_STREAM_TYPE>();
        public Optional<CHANNEL_PROFILE_TYPE> channelProfile = new Optional<CHANNEL_PROFILE_TYPE>();
        public Optional<string> token = new Optional<string>();
        public Optional<bool> publishRhythmPlayerTrack = new Optional<bool>();
        public Optional<bool> isInteractiveAudience = new Optional<bool>();
        public Optional<video_track_id_t> customVideoTrackId = new Optional<video_track_id_t>();
        public Optional<bool> isAudioFilterable = new Optional<bool>();

   }
```

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

### 详情 [#详情]

SDK 支持在同一时间、同一 [RtcConnection](/zh-CN/api-reference/rtc/csharp-windows/class-rtcconnection) 中发布多路音频流、一路视频流。例如，publishMicrophoneTrack、publishCustomAudioTrack 和 publishMediaPlayerAudioTrack 可以同时为 `true`； publishCameraTrack、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`：不发布第三个摄像头采集的视频。

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

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

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

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

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

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

</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/csharp-windows/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/csharp-windows/enum-clientroletype)。

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

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

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

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

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

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

频道使用场景。详见 [CHANNEL_PROFILE_TYPE](/zh-CN/api-reference/rtc/csharp-windows/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/csharp-windows/channel#api_irtcengine_updatechannelmediaoptions) 或 [UpdateChannelMediaOptionsEx](/zh-CN/api-reference/rtc/csharp-windows/channel#api_irtcengineex_updatechannelmediaoptionsex) 时生效。
- 请确保用于生成 token 的 App ID、频道名和用户名和 [Initialize](/zh-CN/api-reference/rtc/csharp-windows/initialize#api_irtcengine_initialize) 方法初始化引擎时用的 App ID，以及 [JoinChannel [2/2]](/zh-CN/api-reference/rtc/csharp-windows/channel#api_irtcengine_joinchannel2) 或 [JoinChannelEx](/zh-CN/api-reference/rtc/csharp-windows/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/csharp-windows/channel#api_irtcengineex_joinchannelex) 方法，以观众身份加入对方的直播间，并将 isInteractiveAudience 设置为 `true`。
- 仅当用户角色为 CLIENT_ROLE_AUDIENCE 时，该参数生效。
:::

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

调用 [CreateCustomVideoTrack](/zh-CN/api-reference/rtc/csharp-windows/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>
