# 媒体资源播放和渲染 (/zh-CN/api-reference/rtc/flutter/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>

```dart
Future<void> selectAudioTrack(int index);
```

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

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

:::note
注： 你需要在调用 [getStreamInfo](/zh-CN/api-reference/rtc/flutter/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>

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

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/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>

```dart
Future<void> setAudioDualMonoMode(AudioDualMonoMode mode);
```

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

在双声道音频文件中，左声道和右声道可以存储不同的音频数据。根据实际需要，你可以设置声道模式为原始模式、左声道模式、右声道模式或混合模式。例如，在 KTV 场景中，音频文件的左声道存储了伴奏，右声道存储了原唱的歌声。如果你只需听伴奏，调用该方法设置音频文件的声道模式为左声道模式；如果你需要同时听伴奏和原唱，调用该方法设置声道模式为混合模式。

:::note
注：

- 你需要在调用 [open](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 后调用该方法。
- 该方法仅适用于双声道的音频文件。
:::

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

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

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

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

</Parameter>
</ParameterList>

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

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

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/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>

```dart
Future<void> setAudioPitch(int pitch);
```

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

:::note
注： 你需要在调用 [open](/zh-CN/api-reference/rtc/flutter/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]

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/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>

```dart
Future<void> setLoopCount(int loopCount);
```

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

如果你希望循环播放，请调用该方法并设置循环播放次数。
循环播放结束时，SDK 会触发 [onPlayerSourceStateChanged](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-observer#callback_imediaplayersourceobserver_onplayersourcestatechanged) 回调，向你报告播放状态为 playerStatePlaybackAllLoopsCompleted。

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

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

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

循环播放的次数。

- ≥0：循环次数。例如，设为 0 表示不循环播放，一共播放一次；设为 1 表示循环播放一次，一共播放 2 次。
- -1：无限循环播放。

</Parameter>
</ParameterList>

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

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

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/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>

```dart
Future<void> setPlaybackSpeed(int speed);
```

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

你需要在 [open](/zh-CN/api-reference/rtc/flutter/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]

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/rtc-interface-class#class_imediaplayer)

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

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

## setPlayerOptionInInt [#setplayeroptioninint]

设置媒体播放器选项。

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

```dart
Future<void> setPlayerOptionInInt({required String key, required int value});
```

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

媒体播放器支持通过 `key` 和 `value` 来设置选项。
该方法和 [setPlayerOptionInString](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption2) 的区别在于，该方法的 `value` 是 Int 型，[setPlayerOptionInString](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption2) 的 `value` 是 String 型。二者不可混用。

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

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

需要提供技术预览或特别定制功能的场景。一般情况下，你无需调用该方法，使用媒体播放器默认的选项设置即可。

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

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

该方法需要在 [open](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 或 [openWithMediaSource](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 之前调用。

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

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

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

key 值。

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

value 值。

</Parameter>
</ParameterList>

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

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

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/rtc-interface-class#class_imediaplayer)

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

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

## setPlayerOptionInString [#setplayeroptioninstring]

设置媒体播放器选项。

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

```dart
Future<void> setPlayerOptionInString(
    {required String key, required String value});
```

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

媒体播放器支持通过 `key` 和 `value` 来设置选项。
该方法和 [setPlayerOptionInInt](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption) 的区别在于，该方法的 `value` 是 String 型，[setPlayerOptionInInt](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-playnrender#api_imediaplayer_setplayeroption) 的 `value` 是 Int 型。二者不可混用。

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

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

需要提供技术预览或特别定制功能的场景。一般情况下，你无需调用该方法，使用媒体播放器默认的选项设置即可。

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

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

该方法需要在 [open](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-open#api_imediaplayer_open) 或 [openWithMediaSource](/zh-CN/api-reference/rtc/flutter/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 之前调用。

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

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

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

key 值。

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

value 值。

</Parameter>
</ParameterList>

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

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

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/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>

```dart
Future<void> setView(int view);
```

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

:::note
注： 在 Flutter 中你不需要主动调用该方法，请使用 [AgoraVideoView](/zh-CN/api-reference/rtc/flutter/class-agoravideoview) 渲染本地和远端视图。
:::

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

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

该方法在加入频道前后均可调用。

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

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

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

渲染视图。Windows 平台为窗口句柄（HWND）。

</Parameter>
</ParameterList>

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

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

方法成功调用时，无返回值；方法调用失败时，会抛出 [AgoraRtcException](/zh-CN/api-reference/rtc/flutter/class-agorartcexception) 异常，你需要捕获异常并进行处理。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [MediaPlayer](/zh-CN/api-reference/rtc/flutter/rtc-interface-class#class_imediaplayer)
