
# 播放音频文件（混音）
#### 功能描述
混音是将音频文件和麦克风音频混合，一般用于播放时长较长的背景音乐或者伴奏。同一时间只能播放一个音频文件，播放给房间内的其他用户听。
支持播放本地或在线音乐文件，文件格式支持播放wav、pcm和单声道mp3音频格式。
 #### 接口调用流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001193113496.png)
#### 实现过程
1. **加入房间并发布本端主流**
   参考[接口调用流程]中加入房间的时序图步骤加入房间，并发布本地主流。
   
2. **播放音频文件**
   调用startAudioMixing可以播放一个音频文件，参数设置参见如下示例。同一时刻只能播放一个音频文件。
   ```
   // localStream 本地主流
   localStream.startAudioMixing({
   // filePath 表示在线音频文件的下载路径
   "filePath":"https://***.***.***.***:50007/music.mp3",
   // startTime 表示音频文件开始播放的时间点，默认值为0。
   "startTime":0,
   // replace 表示是否要用音频文件替换本地音频流
   "replace":false,
   // loop 表示是否需要无限循环播放
   "loop":false,
   // repeatCount 表示音频文件循环播放次数
   "repeatCount":0
   })
   ```
   
3. **设置音频文件音量值**
   音频文件播放过程中，可以调用setAudioMixingVolume设置音频文件播放音量。
   ```
   // volume：音量值
    let volume = 50
    localStream.setAudioMixingVolume (volume)
   ```
   
4. **获取音频文件总时长**
   音频文件播放成功后，可以调用getAudioMixingDuration获取音频文件总时长，用于刷新界面进度条的总时长。
   ```
   localStream.getAudioMixingDuration()
   ```
   
5. **获取音频文件播放进度**
   音频文件播放成功后，可以调用getAudioMixingCurrentPosition获取音频文件当前播放时间点。
   ```
   localStream.getAudioMixingCurrentPosition()
   ```
   
6. **设置音频文件播放位置**
   播放过程中可以调用setAudioMixingPosition设置音频文件播放位置，用于通过拖动进度条改变音频文件的播放位置。
   ```
   localStream.getAudioMixingDuration()
   ```
   
7. **暂停播放音频文件**
   音频文件播放成功后，可以调用pauseAudioMixing接口暂停播放的音频文件。
   ```
   localStream.pauseAudioMixing()
   ```
   
8. **恢复播放暂停的音频文件**
   音频文件暂停播放后，可以调用resumeAudioMixing接口恢复播放。
   ```
   localStream.resumeAudioMixing()
   ```
   
9. **停止播放音频文件**
   音频文件播放成功后，可以调用stopAudioMixing接口停止播放音频文件。
   ```
   localStream.stopAudioMixing()
   ```
   
10. **音频文件播放开始回调** **事件**
    音频文件播放开始时，会触发audio-mixing-played回调信息通知App应用。
    ```
    localStream.on('audio-mixing-played', () => {
     console.info('audioMixing: audio-mixing-played')
    })
    ```
    
11. **音频文件播放结束回调事件**
    音频文件播放结束时，会触发audio-mixing-finished回调信息通知App应用。
    ```
    localStream.on('audio-mixing-finished', () => {
     console.info('audioMixing: audio-mixing-finished')
    })
    ```
    
 
#### API参考
[startAudioMixing](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section12)
[getAudioMixingDuration](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section16)
[getAudioMixingCurrentPosition](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section19)
[setAudioMixingPosition](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section18)
[setAudioMixingVolume](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section17)
[pauseAudioMixing](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section14)
[resumeAudioMixing](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section15)
[stopAudioMixing](https://support.huaweicloud.com/csdk-rtc/rtc_05_0141.html#section13)
