# 音乐文件播放 (/zh-CN/api-reference/rtc/android/play/audio-mixing)

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

<a id="toc_audio_mixing"></a>

<a id="api_irtcengine_adjustaudiomixingplayoutvolume"></a>

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

## adjustAudioMixingPlayoutVolume [#adjustaudiomixingplayoutvolume]

调节本地播放的混音音量。

<a id="api_irtcengine_adjustaudiomixingplayoutvolume__prototype"></a>

```java
public abstract int adjustAudioMixingPlayoutVolume(int volume);
```

<a id="api_irtcengine_adjustaudiomixingplayoutvolume__detailed_desc"></a>

你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用此方法。

<a id="api_irtcengine_adjustaudiomixingplayoutvolume__timing"></a>

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

你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用此方法。

<a id="api_irtcengine_adjustaudiomixingplayoutvolume__parameters"></a>

### 参数 [#参数]

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

本地播放的混音音量，取值范围为 0 到 100。（默认值为 100）

- 0：静音。
- 100：原始音量。

</Parameter>
</ParameterList>

<a id="api_irtcengine_adjustaudiomixingplayoutvolume__return_values"></a>

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

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_adjustaudiomixingpublishvolume"></a>

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

## adjustAudioMixingPublishVolume [#adjustaudiomixingpublishvolume]

调节用于发布的混音音量。

<a id="api_irtcengine_adjustaudiomixingpublishvolume__prototype"></a>

```java
public abstract int adjustAudioMixingPublishVolume(int volume);
```

<a id="api_irtcengine_adjustaudiomixingpublishvolume__detailed_desc"></a>

该方法用于调节发送给其他用户的混音音量。

<a id="api_irtcengine_adjustaudiomixingpublishvolume__timing"></a>

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

请在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用该方法。

<a id="api_irtcengine_adjustaudiomixingpublishvolume__parameters"></a>

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

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

用于发布的混音音量。取值范围为 0 到 100，默认值为 100，表示原始音量。

</Parameter>
</ParameterList>

<a id="api_irtcengine_adjustaudiomixingpublishvolume__return_values"></a>

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

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_adjustaudiomixingvolume"></a>

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

## adjustAudioMixingVolume [#adjustaudiomixingvolume]

调节混音时的音量。

<a id="api_irtcengine_adjustaudiomixingvolume__prototype"></a>

```java
public abstract int adjustAudioMixingVolume(int volume);
```

<a id="api_irtcengine_adjustaudiomixingvolume__detailed_desc"></a>

该方法用于在本地客户端和远端客户端上调节混音音量。

:::note
注： [adjustAudioMixingVolume](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_adjustaudiomixingvolume) 不会影响通过 `playEffect` 方法设置的音效文件的音量。
:::

<a id="api_irtcengine_adjustaudiomixingvolume__timing"></a>

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

请在调用 `startAudioMixing` 方法之后调用该方法。

<a id="api_irtcengine_adjustaudiomixingvolume__parameters"></a>

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

<ParameterList>
<a id="volume-2"></a>
<Parameter name="volume">

混音音量，取值范围为 0 到 100。（默认值为 100，表示原始音量。）

</Parameter>
</ParameterList>

<a id="api_irtcengine_adjustaudiomixingvolume__return_values"></a>

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

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getaudiomixingcurrentposition"></a>

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

## getAudioMixingCurrentPosition [#getaudiomixingcurrentposition]

获取当前混音的播放位置（毫秒）。

<a id="api_irtcengine_getaudiomixingcurrentposition__prototype"></a>

```java
public abstract int getAudioMixingCurrentPosition();
```

<a id="api_irtcengine_getaudiomixingcurrentposition__detailed_desc"></a>

:::note
注：

- 你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用此方法。
- 如果需要多次调用 [getAudioMixingCurrentPosition](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_getaudiomixingcurrentposition)，请确保两次调用之间的时间间隔大于 500 毫秒。
:::

<a id="api_irtcengine_getaudiomixingcurrentposition__return_values"></a>

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

- 方法调用成功，返回当前混音的播放位置（毫秒）。0 表示当前音乐文件尚未开始播放。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getaudiomixingduration"></a>

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

## getAudioMixingDuration [#getaudiomixingduration]

获取音频文件的混音时长（毫秒）。

<a id="api_irtcengine_getaudiomixingduration__prototype"></a>

```java
public abstract int getAudioMixingDuration();
```

<a id="api_irtcengine_getaudiomixingduration__detailed_desc"></a>

<a id="api_irtcengine_getaudiomixingduration__timing"></a>

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

请在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用该方法。

<a id="api_irtcengine_getaudiomixingduration__return_values"></a>

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

- 方法调用成功，返回混音的时长（毫秒）。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getaudiomixingplayoutvolume"></a>

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

## getAudioMixingPlayoutVolume [#getaudiomixingplayoutvolume]

获取本地播放的混音音量。

<a id="api_irtcengine_getaudiomixingplayoutvolume__prototype"></a>

```java
public abstract int getAudioMixingPlayoutVolume();
```

<a id="api_irtcengine_getaudiomixingplayoutvolume__detailed_desc"></a>

你可以调用该方法获取混音音频文件的本地播放音量，有助于排查与音量相关的问题。

<a id="api_irtcengine_getaudiomixingplayoutvolume__timing"></a>

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

在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用此方法。

<a id="api_irtcengine_getaudiomixingplayoutvolume__return_values"></a>

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

- 方法调用成功，返回混音音量，取值范围为 [0, 100]。
- 方法调用失败，返回小于 0 的错误码。

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getaudiomixingpublishvolume"></a>

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

## getAudioMixingPublishVolume [#getaudiomixingpublishvolume]

获取用于发布的混音音量。

<a id="api_irtcengine_getaudiomixingpublishvolume__prototype"></a>

```java
public abstract int getAudioMixingPublishVolume();
```

<a id="api_irtcengine_getaudiomixingpublishvolume__detailed_desc"></a>

该方法有助于排查音频音量相关的问题。

:::note
注： 你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用该方法。
:::

<a id="api_irtcengine_getaudiomixingpublishvolume__return_values"></a>

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

- ≥ 0：方法调用成功，返回混音音量，取值范围为 [0, 100]。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getaudiotrackcount"></a>

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

## getAudioTrackCount [#getaudiotrackcount]

获取当前音乐文件的音轨索引。

<a id="api_irtcengine_getaudiotrackcount__prototype"></a>

```java
public abstract int getAudioTrackCount();
```

<a id="api_irtcengine_getaudiotrackcount__detailed_desc"></a>

:::note
注： 你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用此方法。
:::

<a id="api_irtcengine_getaudiotrackcount__return_values"></a>

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

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_pauseaudiomixing"></a>

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

## pauseAudioMixing [#pauseaudiomixing]

暂停播放和混音的音乐文件。

<a id="api_irtcengine_pauseaudiomixing__prototype"></a>

```java
public abstract int pauseAudioMixing();
```

<a id="api_irtcengine_pauseaudiomixing__detailed_desc"></a>

调用 `startAudioMixing` 播放音乐文件后，可以调用该方法暂停播放。如果需要停止播放，请调用 [stopAudioMixing](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_stopaudiomixing)。

<a id="api_irtcengine_pauseaudiomixing__timing"></a>

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

请在加入频道后调用该方法。

<a id="api_irtcengine_pauseaudiomixing__return_values"></a>

### 返回值 [#返回值-8]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_resumeaudiomixing"></a>

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

## resumeAudioMixing [#resumeaudiomixing]

恢复播放和混音的音乐文件。

<a id="api_irtcengine_resumeaudiomixing__prototype"></a>

```java
public abstract int resumeAudioMixing();
```

<a id="api_irtcengine_resumeaudiomixing__detailed_desc"></a>

调用 [pauseAudioMixing](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_pauseaudiomixing) 后，可以调用 [resumeAudioMixing](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_resumeaudiomixing) 恢复播放。

<a id="api_irtcengine_resumeaudiomixing__timing"></a>

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

请在加入频道后调用此方法。

<a id="api_irtcengine_resumeaudiomixing__return_values"></a>

### 返回值 [#返回值-9]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_selectaudiotrack"></a>

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

## selectAudioTrack [#selectaudiotrack]

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

<a id="api_irtcengine_selectaudiotrack__prototype"></a>

```java
public abstract int selectAudioTrack(int audioIndex);
```

<a id="api_irtcengine_selectaudiotrack__detailed_desc"></a>

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

:::note
注：

- 支持的音频文件格式详见[声网 RTC SDK 支持哪些格式的音频文件](/zh-CN/reference/faq/product/audio_format)。
- 你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后再调用该方法。
:::

<a id="api_irtcengine_selectaudiotrack__parameters"></a>

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

<ParameterList>
<a id="audioindex"></a>
<Parameter name="audioIndex">

你想要指定的音轨索引。该值应大于 0 且小于 [getAudioTrackCount](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_getaudiotrackcount) 返回的值。

</Parameter>
</ParameterList>

<a id="api_irtcengine_selectaudiotrack__return_values"></a>

### 返回值 [#返回值-10]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_imediaplayer_selectmultiaudiotrack"></a>

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

## selectMultiAudioTrack [#selectmultiaudiotrack]

选择要在本地设备播放和发布到频道的音轨。

<a id="api_imediaplayer_selectmultiaudiotrack__prototype"></a>

```java
int selectMultiAudioTrack(int playoutTrackIndex, int publishTrackIndex);
```

<a id="api_imediaplayer_selectmultiaudiotrack__detailed_desc"></a>

在调用该方法前，你需要通过 [openWithMediaSource](/zh-CN/api-reference/rtc/android/play/mediaplayer/mediaplayer-open#api_imediaplayer_openwithmediasource) 打开媒体文件，并在 [MediaPlayerSource](/zh-CN/api-reference/rtc/android/class-mediasource) 中将 `enableMultiAudioTrack` 设置为 true。

<a id="api_imediaplayer_selectmultiaudiotrack__scenario"></a>

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

该方法适用于例如 KTV 场景：主持人可以选择在本地播放原唱音轨，同时将伴奏音轨发布到频道。

<a id="api_imediaplayer_selectmultiaudiotrack__parameters"></a>

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

<ParameterList>
<a id="playouttrackindex"></a>
<Parameter name="playoutTrackIndex">

用于本地播放的音轨索引。你可以通过 [getStreamInfo](/zh-CN/api-reference/rtc/android/play/mediaplayer/mediaplayer-info#api_imediaplayer_getstreaminfo) 获取该索引。

</Parameter>
<a id="publishtrackindex"></a>
<Parameter name="publishTrackIndex">

要发布到频道中的音轨索引。你可以通过 [getStreamInfo](/zh-CN/api-reference/rtc/android/play/mediaplayer/mediaplayer-info#api_imediaplayer_getstreaminfo) 获取该索引。

</Parameter>
</ParameterList>

<a id="api_imediaplayer_selectmultiaudiotrack__return_values"></a>

### 返回值 [#返回值-11]

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

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

- [IMediaPlayer](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_imediaplayer)

<a id="api_irtcengine_setaudiomixingdualmonomode"></a>

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

## setAudioMixingDualMonoMode [#setaudiomixingdualmonomode]

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

<a id="api_irtcengine_setaudiomixingdualmonomode__prototype"></a>

```java
public abstract int setAudioMixingDualMonoMode(Constants.AudioMixingDualMonoMode mode);
```

<a id="api_irtcengine_setaudiomixingdualmonomode__detailed_desc"></a>

你可以根据需要将音频文件的声道模式设置为原始模式、左声道模式、右声道模式或混合声道模式。例如，在 KTV 场景中，音乐文件的左声道存储伴奏，右声道存储原唱人声。你可以根据实际需求进行设置：

- 如果只想听伴奏，使用该方法将音频文件的声道模式设置为左声道模式。
- 如果需要同时听到伴奏和原唱人声，调用该方法将声道模式设置为混合模式。

:::note
注： 该方法仅适用于立体声音频文件。
:::

<a id="api_irtcengine_setaudiomixingdualmonomode__scenario"></a>

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

在 KTV 场景中，音乐文件的左声道存储伴奏，右声道存储原唱人声。你可以根据实际需求进行设置：

- 如果你只想听到伴奏，调用该方法将声道模式设置为左声道模式。
- 如果你需要同时听到伴奏和原唱人声，调用该方法将声道模式设置为混合模式。

<a id="api_irtcengine_setaudiomixingdualmonomode__timing"></a>

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

在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用该方法。

<a id="api_irtcengine_setaudiomixingdualmonomode__parameters"></a>

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

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

声道模式。详见 [AudioMixingDualMonoMode](/zh-CN/api-reference/rtc/android/enum-audiomixingdualmonomode)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudiomixingdualmonomode__return_values"></a>

### 返回值 [#返回值-12]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setaudiomixingpitch"></a>

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

## setAudioMixingPitch [#setaudiomixingpitch]

设置本地音乐文件的音调。

<a id="api_irtcengine_setaudiomixingpitch__prototype"></a>

```java
public abstract int setAudioMixingPitch(int pitch);
```

<a id="api_irtcengine_setaudiomixingpitch__detailed_desc"></a>

你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用该方法。

<a id="api_irtcengine_setaudiomixingpitch__timing"></a>

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

你需要在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调后调用该方法。

<a id="api_irtcengine_setaudiomixingpitch__parameters"></a>

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

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

按半音阶设置本地音乐文件的音调（默认值为 0）。取值范围为 -12 到 12，相邻数值之间的音调差为一个半音。该参数的绝对值越大，音调变化越明显。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudiomixingpitch__return_values"></a>

### 返回值 [#返回值-13]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setaudiomixingplaybackspeed"></a>

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

## setAudioMixingPlaybackSpeed [#setaudiomixingplaybackspeed]

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

<a id="api_irtcengine_setaudiomixingplaybackspeed__prototype"></a>

```java
public abstract int setAudioMixingPlaybackSpeed(int speed);
```

<a id="api_irtcengine_setaudiomixingplaybackspeed__detailed_desc"></a>

请确保在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged) 回调，报告状态为 `AUDIO_MIXING_STATE_PLAYING` 后再调用此方法。

<a id="api_irtcengine_setaudiomixingplaybackspeed__parameters"></a>

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

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

播放速度。建议设置为 50 到 400 之间的值，定义如下：

- 50：原始速度的一半。
- 100：原始速度。
- 400：原始速度的 4 倍。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudiomixingplaybackspeed__return_values"></a>

### 返回值 [#返回值-14]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setaudiomixingposition"></a>

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

## setAudioMixingPosition [#setaudiomixingposition]

设置混音的播放位置。

<a id="api_irtcengine_setaudiomixingposition__prototype"></a>

```java
public abstract int setAudioMixingPosition(int pos);
```

<a id="api_irtcengine_setaudiomixingposition__detailed_desc"></a>

<a id="api_irtcengine_setaudiomixingposition__timing"></a>

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

请在调用 `startAudioMixing` 并收到 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged) 回调后调用此方法。

<a id="api_irtcengine_setaudiomixingposition__parameters"></a>

### 参数 [#参数-8]

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

播放位置，单位为毫秒。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudiomixingposition__return_values"></a>

### 返回值 [#返回值-15]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_startaudiomixing"></a>

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

## startAudioMixing [1/2] [#startaudiomixing-12]

开始播放音乐文件。

<a id="api_irtcengine_startaudiomixing__prototype"></a>

```java
public abstract int startAudioMixing(String filePath, boolean loopback, int cycle);
```

<a id="api_irtcengine_startaudiomixing__detailed_desc"></a>

<a id="废弃"></a>

:::error[废弃]
该方法已废弃。请改用 [startAudioMixing [2/2]](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_startaudiomixing2)。
:::

该方法支持播放以 `content://` 开头的 URI 文件。支持的音频文件格式详见声网 RTC SDK 支持的音频文件格式。如果本地音乐文件不存在、SDK 不支持该文件格式，或无法访问音乐文件的 URL，SDK 会上报 `AUDIO_MIXING_REASON_CAN_NOT_OPEN`。

:::note
注：

- 如果调用该方法播放短音效文件，可能会播放失败。建议使用 `playEffect` 播放此类文件。
- 如果需要多次调用该方法，确保每次调用的时间间隔大于 500 毫秒。
- 在 Android 平台上，有以下注意事项：

  - 使用该方法时，需确保 Android 设备版本为 v4.2 或更高，API 版本为 v16 或更高。
  - 如果需要播放在线音乐文件，不建议使用重定向的 URL 地址。部分 Android 设备可能无法打开重定向的 URL。
  - 如果在模拟器上调用该方法，需确保音乐文件位于 `/sdcard/` 目录下，且格式为 MP3。
:::

<a id="api_irtcengine_startaudiomixing__timing"></a>

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

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

<a id="api_irtcengine_startaudiomixing__related"></a>

### 相关回调 [#相关回调]

成功调用该方法会触发 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调。当音频混音文件播放结束时，SDK 会在本地客户端触发 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_STOPPED`）回调。

<a id="api_irtcengine_startaudiomixing__parameters"></a>

### 参数 [#参数-9]

<ParameterList>
<a id="filepath"></a>
<Parameter name="filePath">

:::note
注： 如果你已通过调用 `preloadEffect` 将音效预加载到内存中，确保该参数的值与 `preloadEffect` 中的 `filePath` 参数一致。
:::

文件路径。支持以下类型：

- 以 `content://` 开头的 URI 地址。
- 以 `/assets/` 开头的路径。
- URL。
- 本地文件的绝对路径，需精确到文件名及扩展名。

支持的音频格式包括 MP3、AAC、M4A、MP4、WAV 和 3GP。

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

是否仅在本地客户端播放音乐文件：

- true：仅本地播放，只有本地用户能听到音乐。
- false：发布到远端，远端用户也能听到音乐。

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

音乐文件的播放次数：

- &gt; 0：播放指定次数，例如 1 表示播放 1 次。
- -1：无限循环播放。

</Parameter>
</ParameterList>

<a id="api_irtcengine_startaudiomixing__return_values"></a>

### 返回值 [#返回值-16]

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

  - -1：发生通用错误（无明确原因）。
  - -2：参数无效。
  - -3：SDK 未就绪：

    - 音频模块未启用。
    - 程序未完成。
    - [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine) 初始化失败。请重新初始化 [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)。

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_startaudiomixing2"></a>

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

## startAudioMixing [2/2] [#startaudiomixing-22]

开始播放音乐文件。

<a id="api_irtcengine_startaudiomixing2__prototype"></a>

```java
public abstract int startAudioMixing(String filePath, boolean loopback, int cycle, int startPos);
```

<a id="api_irtcengine_startaudiomixing2__detailed_desc"></a>

该方法支持播放以 `content://` 开头的 URI 文件。如果本地音乐文件不存在、SDK 不支持该文件格式，或无法访问音乐文件的 URL，SDK 会返回 `AUDIO_MIXING_REASON_CAN_NOT_OPEN`。

:::note
注：

- 如果你调用该方法播放短音效文件，可能会播放失败。声网建议使用 `playEffect` 方法播放此类文件。
- 如果你需要多次调用该方法，请确保每次调用之间的时间间隔大于 500 毫秒。
- 在 Android 平台上，请注意以下事项：

  - 设备需为 Android v4.2 或更高版本，且 API 版本为 v16 或更高。
  - 如果播放在线音乐文件，声网不建议使用重定向的 URL 地址，部分 Android 设备可能无法打开此类地址。
  - 如果在模拟器上调用该方法，请确保音乐文件位于 `/sdcard/` 目录下，且格式为 MP3。
:::

<a id="api_irtcengine_startaudiomixing2__timing"></a>

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

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

<a id="api_irtcengine_startaudiomixing2__related"></a>

### 相关回调 [#相关回调-1]

成功调用该方法会触发 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_PLAYING`）回调。当音频混音文件播放结束时，SDK 会在本地触发 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)（`AUDIO_MIXING_STATE_STOPPED`）回调。

<a id="api_irtcengine_startaudiomixing2__parameters"></a>

### 参数 [#参数-10]

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

文件路径。路径需精确到文件名和后缀名。支持 URL 地址、绝对路径或以 `/assets/` 开头的路径。使用绝对路径访问本地文件可能会遇到权限问题，建议使用 URI 地址，例如：`content://com.android.providers.media.documents/document/audio%3A14441`。

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

是否仅在本地播放音乐文件：

- true：仅本地播放，只有本地用户能听到音乐。
- false：将音乐发布到远端，远端用户也能听到音乐。

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

音乐文件的播放次数：

- &gt; 0：播放指定次数，例如 1 表示播放 1 次。
- -1：无限循环播放。

</Parameter>
<a id="startpos"></a>
<Parameter name="startPos">

音乐文件的播放起始位置（单位：毫秒）。

</Parameter>
</ParameterList>

<a id="api_irtcengine_startaudiomixing2__return_values"></a>

### 返回值 [#返回值-17]

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

  - -1：发生通用错误（无明确原因）。
  - -2：参数无效。
  - -3：SDK 未就绪：

    - 音频模块未启用。
    - 程序未完成。
    - [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine) 初始化失败，请重新初始化 [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)。

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_stopaudiomixing"></a>

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

## stopAudioMixing [#stopaudiomixing]

停止播放音乐文件。

<a id="api_irtcengine_stopaudiomixing__prototype"></a>

```java
public abstract int stopAudioMixing();
```

<a id="api_irtcengine_stopaudiomixing__detailed_desc"></a>

调用 `startAudioMixing` 播放音乐文件后，可以调用该方法停止播放。如果只需要暂停播放，请调用 [pauseAudioMixing](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_pauseaudiomixing)。

<a id="api_irtcengine_stopaudiomixing__timing"></a>

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

请在加入频道后调用此方法。

<a id="api_irtcengine_stopaudiomixing__return_values"></a>

### 返回值 [#返回值-18]

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

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

- [RtcEngine](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengine)

<a id="callback_irtcengineeventhandler_onaudiomixingfinished"></a>

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

## onAudioMixingFinished [#onaudiomixingfinished]

本地音乐文件播放结束回调。

<a id="callback_irtcengineeventhandler_onaudiomixingfinished__prototype"></a>

```java
public void onAudioMixingFinished()
```

<a id="callback_irtcengineeventhandler_onaudiomixingfinished__detailed_desc"></a>

<a id="废弃-1"></a>

:::error[废弃]
该方法已废弃，请改用 [onAudioMixingStateChanged](/zh-CN/api-reference/rtc/android/play/audio-mixing#callback_irtcengineeventhandler_onaudiomixingstatechanged)。
:::

调用 `startAudioMixing` 播放本地音乐文件后，播放结束时会触发该回调。如果调用 `startAudioMixing` 失败，会返回错误码 `WARN_AUDIO_MIXING_OPEN_ERROR`。

<a id="callback_irtcengineeventhandler_onaudiomixingfinished__timing"></a>

### 触发时机 [#触发时机]

该回调在本地音乐文件播放结束时被触发。

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onaudiomixingpositionchanged"></a>

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

## onAudioMixingPositionChanged [#onaudiomixingpositionchanged]

音乐文件播放进度回调。

<a id="callback_irtcengineeventhandler_onaudiomixingpositionchanged__prototype"></a>

```java
public void onAudioMixingPositionChanged(long position)
```

<a id="callback_irtcengineeventhandler_onaudiomixingpositionchanged__detailed_desc"></a>

调用 `startAudioMixing` 方法播放音乐文件后，SDK 每两秒触发一次该回调，报告音乐文件的播放进度。

<a id="callback_irtcengineeventhandler_onaudiomixingpositionchanged__timing"></a>

### 触发时机 [#触发时机-1]

该回调在调用 `startAudioMixing` 播放音乐文件后，每两秒触发一次。

<a id="callback_irtcengineeventhandler_onaudiomixingpositionchanged__parameters"></a>

### 参数 [#参数-11]

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

播放进度，单位为毫秒。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onaudiomixingstatechanged"></a>

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

## onAudioMixingStateChanged [#onaudiomixingstatechanged]

音乐文件播放状态变化回调。

<a id="callback_irtcengineeventhandler_onaudiomixingstatechanged__prototype"></a>

```java
public void onAudioMixingStateChanged(int state, int reason)
```

<a id="callback_irtcengineeventhandler_onaudiomixingstatechanged__detailed_desc"></a>

该回调报告当前音乐文件的播放状态和错误码。

<a id="callback_irtcengineeventhandler_onaudiomixingstatechanged__timing"></a>

### 触发时机 [#触发时机-2]

该回调在音乐文件播放状态发生变化时被触发。

<a id="callback_irtcengineeventhandler_onaudiomixingstatechanged__parameters"></a>

### 参数 [#参数-12]

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

音乐文件的播放状态：

- `AUDIO_MIXING_STATE_PLAYING` (710)：音乐文件正在播放。
- `AUDIO_MIXING_STATE_PAUSED` (711)：音乐文件暂停播放。
- `AUDIO_MIXING_STATE_STOPPED` (713)：音乐文件停止播放。
- `AUDIO_MIXING_STATE_FAILED` (714)：播放音乐文件时出现异常，SDK 会通过 `reason` 参数返回具体原因。

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

错误码：

- `AUDIO_MIXING_REASON_OK` (0)：没有错误。
- `AUDIO_MIXING_REASON_CAN_NOT_OPEN` (701)：SDK 无法打开音乐文件。
- `AUDIO_MIXING_REASON_TOO_FREQUENT_CALL` (702)：SDK 打开音乐文件过于频繁。
- `AUDIO_MIXING_REASON_INTERRUPTED_EOF` (703)：音乐文件播放被中断。
- `AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED` (721)：音乐文件完成一次循环播放。
- `AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED` (723)：音乐文件完成所有循环播放。
- `AUDIO_MIXING_REASON_STOPPED_BY_USER` (724)：通过调用 [stopAudioMixing](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_stopaudiomixing) 停止音乐文件播放。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/android/rtc-interface-class#class_irtcengineeventhandler)
