# AgoraRtcChannelMediaOptions (/zh-CN/api-reference/rtc/ios/class-channelmediaoptions)

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

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

```objc
@interface AgoraRtcChannelMediaOptions : NSObject
@property(assign, nonatomic) BOOL publishCameraTrack;
@property(assign, nonatomic) BOOL publishSecondaryCameraTrack;
@property(assign, nonatomic) BOOL publishMicrophoneTrack;
@property(assign, nonatomic) BOOL publishScreenCaptureVideo;
@property(assign, nonatomic) BOOL publishScreenCaptureAudio;
@property(assign, nonatomic) BOOL publishThirdCameraTrack;
@property(assign, nonatomic) BOOL publishFourthCameraTrack;
@property(assign, nonatomic) BOOL publishScreenTrack;
@property(assign, nonatomic) BOOL publishSecondaryScreenTrack;
@property(assign, nonatomic) BOOL publishThirdScreenTrack;
@property(assign, nonatomic) BOOL publishFourthScreenTrack;
@property(assign, nonatomic) BOOL publishCustomAudioTrack;
@property(assign, nonatomic) NSInteger publishCustomAudioTrackId;
@property(assign, nonatomic) BOOL publishCustomVideoTrack;
@property(assign, nonatomic) BOOL publishEncodedVideoTrack;
@property(assign, nonatomic) BOOL publishMediaPlayerAudioTrack;
@property(assign, nonatomic) BOOL publishMediaPlayerVideoTrack;
@property(assign, nonatomic) BOOL publishTranscodedVideoTrack;
@property(assign, nonatomic) BOOL publishMixedAudioTrack;
@property(assign, nonatomic) BOOL publishLipSyncTrack;
@property(assign, nonatomic) BOOL autoSubscribeAudio;
@property(assign, nonatomic) BOOL autoSubscribeVideo;
@property(assign, nonatomic) BOOL enableAudioRecordingOrPlayout;
@property(assign, nonatomic) NSInteger publishMediaPlayerId;
@property(assign, nonatomic) AgoraClientRole clientRoleType;
@property(assign, nonatomic) AgoraAudienceLatencyLevelType audienceLatencyLevel;
@property(assign, nonatomic) AgoraVideoStreamType defaultVideoStreamType;
@property(assign, nonatomic) AgoraChannelProfile channelProfile;
@property(assign, nonatomic) NSInteger audioDelayMs;
@property(assign, nonatomic) NSInteger mediaPlayerAudioDelayMs;
@property(copy, nonatomic) NSString * _Nullable token;
@property(assign, nonatomic) BOOL enableBuiltInMediaEncryption;
@property(assign, nonatomic) BOOL publishRhythmPlayerTrack;
@property(assign, nonatomic) BOOL isInteractiveAudience;
@property(assign, nonatomic) NSInteger customVideoTrackId;
@property(assign, nonatomic) BOOL isAudioFilterable;
@property(copy, nonatomic) NSString * _Nullable parameters;
@property(assign, nonatomic) BOOL enableMultipath;
@property(assign, nonatomic) AgoraMultipathMode uplinkMultipathMode;
@property(assign, nonatomic) AgoraMultipathMode downlinkMultipathMode;
@property(assign, nonatomic) AgoraMultipathType preferMultipathType;
@end
```

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

支持在同一个 [AgoraRtcConnection](/zh-CN/api-reference/rtc/ios/class-rtcconnection) 中同时发布多个音频流和一个视频流。例如，你可以同时将 `publishMicrophoneTrack`、`publishCustomAudioTrack` 和 `publishMediaPlayerAudioTrack` 设置为 YES，但 `publishCameraTrack`、`publishScreenCaptureVideo`（iOS）/`publishScreenTrack`（macOS）、`publishCustomVideoTrack` 和 `publishEncodedVideoTrack` 中只能有一个设置为 YES。

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

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

## 属性 [#属性]

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

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

- YES：发布由摄像头采集的视频。
- NO：不发布由摄像头采集的视频。

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

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

- YES：发布由第二路摄像头采集的视频。
- NO：不发布由第二路摄像头采集的视频。

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

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

- YES：发布由麦克风采集的音频。
- NO：不发布由麦克风采集的音频。

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

:::note
注： 自 v4.0.0 起，参数名由 publishScreenTrack 更名为 publishScreenCaptureVideo。
:::

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

- YES：发布来自屏幕的视频采集。
- NO：不发布来自屏幕的视频采集。

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

是否发布来自屏幕的音频采集：

- YES：发布来自屏幕的音频采集。
- NO：不发布来自屏幕的音频采集。

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

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

- YES：发布由第三路摄像头采集的视频。
- NO：不发布由第三路摄像头采集的视频。

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

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

- YES：发布由第四路摄像头采集的视频。
- NO：不发布由第四路摄像头采集的视频。

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

（仅适用于 macOS）是否发布从主屏幕采集的视频：

- YES：发布从主屏幕采集的视频。
- NO：不发布从主屏幕采集的视频。

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

（仅适用于 macOS）是否发布从第二块屏幕采集的视频：

- YES：发布从第二块屏幕采集的视频。
- NO：不发布从第二块屏幕采集的视频。

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

（仅适用于 macOS）是否发布从第三块屏幕采集的视频：

- YES：发布从第三块屏幕采集的视频。
- NO：不发布从第三块屏幕采集的视频。

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

（仅适用于 macOS）是否发布从第四块屏幕采集的视频：

- YES：发布从第四块屏幕采集的视频。
- NO：不发布从第四块屏幕采集的视频。

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

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

- YES：发布从自定义音频源采集的音频。
- NO：不发布从自定义音频源采集的音频。

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

要发布的自定义音频轨道的 ID。默认值为 0。你可以通过 createCustomAudioTrack 方法获取自定义音频轨道 ID。

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

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

- YES：发布自定义视频源采集的视频。
- NO：不发布自定义视频源采集的视频。

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

是否发布编码后的视频：

- YES：发布编码后的视频。
- NO：不发布编码后的视频。

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

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

- YES：发布媒体播放器的音频。
- NO：不发布媒体播放器的音频。

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

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

- YES：发布媒体播放器的视频。
- NO：不发布媒体播放器的视频。

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

是否发布本地合图视频轨道：

- YES：发布本地合图视频轨道。
- NO：（默认）不发布本地合图视频轨道。

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

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

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

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

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

- YES：自动订阅所有远端音频流。
- NO：不自动订阅任何远端音频流。

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

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

- YES：自动订阅所有远端视频流。
- NO：不自动订阅任何远端视频流。

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

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

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

- YES：启用音频采集或播放功能。
- NO：不启用音频采集或播放功能。

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

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

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

用户角色，详见 [AgoraClientRole](/zh-CN/api-reference/rtc/ios/enum-clientroletype)。

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

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

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

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

默认的视频流类型，详见 [AgoraVideoStreamType](/zh-CN/api-reference/rtc/ios/enum-videostreamtype)。

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

频道场景，详见 [AgoraChannelProfile](/zh-CN/api-reference/rtc/ios/enum-channelprofiletype)。

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

是否发布混音音频轨道：

- YES：发布混音音频轨道。
- NO：不发布混音音频轨道。

</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
注：

- 该参数仅在调用 `updateChannelWithMediaOptions` 或 `updateChannelExWithMediaOptions` 方法时生效。
- 请确保用于生成 Token 的 App ID、频道名和用户名与用于初始化 RTC 引擎的 [sharedEngineWithConfig\:delegate:](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_initialize) 方法，以及用于加入频道的 [joinChannelByToken\:channelId\:uid\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/ios/channel#api_irtcengine_joinchannel2) 和 [joinChannelExByToken\:connection\:delegate\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/ios/channel#api_irtcengineex_joinchannelex) 方法中使用的参数一致。
:::

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

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

是否启用媒体包加密：

- YES：启用媒体包加密。
- NO：（默认）不启用媒体包加密。

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

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

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

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

:::note
注：

- 该参数仅适用于连麦直播场景。联播主播需调用 [joinChannelExByToken\:connection\:delegate\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/ios/channel#api_irtcengineex_joinchannelex) 方法以观众身份加入其他主播的频道，并将 `isInteractiveAudience` 设置为 YES。
- 该参数仅在用户角色为 `AgoraClientRoleAudience` 时生效。
:::

是否启用互动模式：

- YES：启用互动模式。启用后，若用户角色为观众，则可以低延迟接收远端视频流。
- NO：不启用互动模式。禁用后，用户将以默认设置接收远端视频流。

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

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

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

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

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

- YES：音频流会被过滤。
- NO：音频流不会被过滤。

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

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

- iOS：iOS 12.0 或更高版本。
- macOS：10.14 或更高版本。
:::

是否启用多路径传输：

- YES：启用多路径传输。
- NO：禁用多路径传输。

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

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

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

</Parameter>
</ParameterList>
