# 媒体资源播放和渲染 (/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-playnrender)

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

<a id="toc_mediaplayer_playnrender"></a>

<a id="api_imediaplayer_selectaudiotrack_imediaplayer"></a>

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

## selectAudioTrack: [#selectaudiotrack]

选择播放过程中使用的音轨。

<a id="api_imediaplayer_selectaudiotrack_imediaplayer__prototype"></a>

```objc
- (int)selectAudioTrack:(int)index NS_SWIFT_NAME(selectAudioTrack(_:));
```

<a id="api_imediaplayer_selectaudiotrack_imediaplayer__detailed_desc"></a>

获取音频文件的音轨索引后，可以调用该方法指定任意音轨进行播放。例如，如果一个多音轨文件的不同音轨存储了不同语言的歌曲，可以调用该方法设置播放语言。

:::note
注： 需要在调用 [getStreamByIndex:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-info#api_imediaplayer_getstreaminfo) 获取音频流索引值之后再调用该方法。
:::

<a id="api_imediaplayer_selectaudiotrack_imediaplayer__parameters"></a>

### 参数 [#参数]

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

音轨的索引。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_selectaudiotrack_imediaplayer__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setaudiodualmonomode"></a>

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

## setAudioDualMonoMode: [#setaudiodualmonomode]

设置当前音频文件的声道模式。

<a id="api_imediaplayer_setaudiodualmonomode__prototype"></a>

```objc
- (int)setAudioDualMonoMode:(AgoraAudioDualMonoMode)mode NS_SWIFT_NAME(setAudioDualMonoMode(_:));
```

<a id="api_imediaplayer_setaudiodualmonomode__detailed_desc"></a>

你可以使用该方法设置当前音频文件的声道模式，包括原始模式、左声道模式、右声道模式或混合声道模式。例如，在 KTV 场景中，音乐文件的左声道存储伴奏，右声道存储人声。如果你只需要听伴奏，可以调用该方法将声道模式设置为左声道模式；如果你需要同时听到伴奏和人声，可以将声道模式设置为混合声道模式。

:::note
注：

- 请在调用 [open\:startPos:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 方法之后调用此方法。
- 此方法仅适用于立体声音频文件。
:::

<a id="api_imediaplayer_setaudiodualmonomode__parameters"></a>

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

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

声道模式。详见 [AgoraAudioDualMonoMode](/zh-CN/api-reference/rtc/macos/enum-audiodualmonomode)。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setaudiodualmonomode__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setaudiopitch"></a>

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

## setAudioPitch: [#setaudiopitch]

设置当前媒体资源的音调。

<a id="api_imediaplayer_setaudiopitch__prototype"></a>

```objc
- (int)setAudioPitch:(NSInteger)pitch NS_SWIFT_NAME(setAudioPitch(_:));
```

<a id="api_imediaplayer_setaudiopitch__detailed_desc"></a>

:::note
注： 请在调用 [open\:startPos:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 方法之后调用此方法。
:::

<a id="api_imediaplayer_setaudiopitch__parameters"></a>

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

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

按半音阶设置本地音乐文件的音调（默认值为 0，表示保持原始音调）。该值的范围是 -12 到 12，相邻两个值之间的音调差为一个半音。该参数的绝对值越大，设置的本地音乐文件音调越高或越低。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setaudiopitch__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setloopcount"></a>

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

## setLoopCount: [#setloopcount]

设置循环播放次数。

<a id="api_imediaplayer_setloopcount__prototype"></a>

```objc
- (int)setLoopCount:(int)loopCount NS_SWIFT_NAME(setLoopCount(_:));
```

<a id="api_imediaplayer_setloopcount__detailed_desc"></a>

调用此方法可设置循环播放次数。循环播放完成后，SDK 会触发 [AgoraRtcMediaPlayer\:didChangedToState\:reason:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 回调，并报告播放状态为 `AgoraMediaPlayerStatePlayBackAllLoopsCompleted`。

<a id="api_imediaplayer_setloopcount__parameters"></a>

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

<ParameterList>
<a id="loopcount"></a>
<Parameter name="loopCount">

音频效果的循环播放次数：

- ≥ 0：播放的次数。例如，设置为 0 表示不循环播放，仅播放一次；设置为 1 表示循环播放一次，总共播放两次。
- -1：无限循环播放音频文件。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setloopcount__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setplaybackspeed"></a>

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

## setPlaybackSpeed: [#setplaybackspeed]

设置当前音频文件的播放速度。

<a id="api_imediaplayer_setplaybackspeed__prototype"></a>

```objc
- (int)setPlaybackSpeed:(int)speed NS_SWIFT_NAME(setPlaybackSpeed(_:));
```

<a id="api_imediaplayer_setplaybackspeed__detailed_desc"></a>

调用该方法前，需要先调用 [open\:startPos:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 方法。

<a id="api_imediaplayer_setplaybackspeed__parameters"></a>

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

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

播放速度。声网建议将该参数设置为 30 到 400 之间的整数，具体含义如下：

- 30：原始速度的 0.3 倍。
- 100：原始速度。
- 400：原始速度的 4 倍。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setplaybackspeed__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setplayeroption"></a>

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

## setPlayerOption\:value: [#setplayeroptionvalue]

设置媒体播放器选项。

<a id="api_imediaplayer_setplayeroption__prototype"></a>

```objc
- (int)setPlayerOption:(NSString *)key value:(NSInteger)value NS_SWIFT_NAME(setPlayerOption(_:value:));
```

<a id="api_imediaplayer_setplayeroption__detailed_desc"></a>

你可以通过 `key` 和 `value` 设置媒体播放器的选项。该方法与 [setPlayerOptionString\:value:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption2) 的区别在于，本方法的 `value` 参数类型为 `NSInteger`，而 [setPlayerOptionString\:value:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption2) 的 `value` 参数类型为 `NSString`。这两个方法不能同时使用。一般情况下，你无需调用此方法，直接使用媒体播放器提供的默认选项即可。

<a id="api_imediaplayer_setplayeroption__scenario"></a>

### 适用场景 [#适用场景]

适用于需要技术预览或特殊定制功能的场景。

<a id="api_imediaplayer_setplayeroption__timing"></a>

### 调用时机 [#调用时机]

在调用 [open\:startPos:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 或 [openWithMediaSource:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 方法之前调用。

<a id="api_imediaplayer_setplayeroption__parameters"></a>

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

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

选项的键。

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

选项的值。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setplayeroption__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setplayeroption2"></a>

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

## setPlayerOptionString\:value: [#setplayeroptionstringvalue]

设置媒体播放器的选项。

<a id="api_imediaplayer_setplayeroption2__prototype"></a>

```objc
- (int)setPlayerOptionString:(NSString *)key value:(NSString *)value NS_SWIFT_NAME(setPlayerOptionString(_:value:));
```

<a id="api_imediaplayer_setplayeroption2__detailed_desc"></a>

你可以通过 `key` 和 `value` 设置媒体播放器的选项。该方法与 [setPlayerOption\:value:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption) 的区别在于，此方法的 `value` 参数类型为 `NSString`，而 [setPlayerOption\:value:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption) 的 `value` 参数类型也是 `NSString`，但这两个方法不能同时使用。通常情况下，你无需调用此方法，直接使用媒体播放器提供的默认选项即可。

<a id="api_imediaplayer_setplayeroption2__scenario"></a>

### 适用场景 [#适用场景-1]

适用于需要技术预览或特殊定制功能的场景。

<a id="api_imediaplayer_setplayeroption2__timing"></a>

### 调用时机 [#调用时机-1]

在调用 [open\:startPos:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 或 [openWithMediaSource:](/zh-CN/api-reference/rtc/macos/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 方法之前调用此方法。

<a id="api_imediaplayer_setplayeroption2__parameters"></a>

### 参数 [#参数-6]

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

选项的键。

</Parameter>
<a id="value-1"></a>
<Parameter name="value">

选项的值。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setplayeroption2__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)

<a id="api_imediaplayer_setview"></a>

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

## setView: [#setview]

设置渲染视图。

<a id="api_imediaplayer_setview__prototype"></a>

```objc
- (int)setView:(View *_Nullable)view NS_SWIFT_NAME(setView(_:));
```

<a id="api_imediaplayer_setview__detailed_desc"></a>

<a id="api_imediaplayer_setview__timing"></a>

### 调用时机 [#调用时机-2]

你可以在加入频道前或加入后调用该方法。

<a id="api_imediaplayer_setview__parameters"></a>

### 参数 [#参数-7]

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

渲染视图。详见 `View`。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_setview__return_values"></a>

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

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

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

- [AgoraRtcMediaPlayerProtocol](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_imediaplayer)
