human: 如何处理七牛云的实时音视频背景音乐/音效混音（新版）

gpt: [实时音视频](https://developer.qiniu.com/rtc) > 使用指南 > Web >背景音乐/音效混音（新版）

#  背景音乐/音效混音（新版）

最近更新时间: 2022-12-01 17:43:17

本部分介绍背景音乐混音功能的使用

> 注意，自 SDK 4.2.0
> 版本开始，增加了新版本的背景音乐混音功能，本篇文档介绍新版本背景音乐混音的用法。如果想要查看旧版本背景音乐混音的用法，可以参考
> [背景音乐混音（旧版）](https://developer.qiniu.com/rtc/9470/background-music-mix-web)。

# 背景音乐混音

用户可在连麦过程中通过混音功能添加背景音乐，支持 MP3、AAC 等格式的本地或在线音乐，使用方式如下：

## 创建 createAudioMusicMixer

SDK 当前仅支持基于
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/api/9064/WebQNMicrophoneAudioTrack)
的混音功能，因此，可以通过
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/api/9064/WebQNMicrophoneAudioTrack)
创建
[QNAudioMusicMixer](https://developer.qiniu.com/rtc/12353/WebQNAudioMusicMixer)
对象。

    
    
    const filePath = "/sdcard/music/example.mp3";
    const musicAudioMixer = mMicrophoneAudioTrack.createAudioMusicMixer(filePath)
    

`createAudioMusicMixer` 不仅支持文件地址，同时还支持 AudioBuffer 与 File 类型。

## 音乐控制

在创建了
[QNAudioMusicMixer](https://developer.qiniu.com/rtc/12353/WebQNAudioMusicMixer)
实例后，可以通过该实例提供的混音控制接口进行混音操作的控制，使用代码参考如下：

    
    
    // 开始混音，成功后会触发 QNAudioMusicMixerState.MIXING 状态的回调
    mAudioMixer.start();
    // 停止混音，成功后会触发 QNAudioMusicMixerState.STOPPED 状态的回调
    mAudioMixer.stop();
    // 恢复混音，成功后会触发 QNAudioMusicMixerState.MIXING 状态的回调
    mAudioMixer.resume();
    // 暂停混音，成功后会触发 QNAudioMusicMixerState.PAUSED 状态的回调
    mAudioMixer.pause();
    // 跳到指定位置进行混音，成功后回触发 QNAudioMusicMixerState.MIXING 状态的回调
    mAudioMixer.seekTo(positionMs);
    

上述为混音基本流程的控制，更多控制方式请参考
[QNAudioMusicMixer](https://developer.qiniu.com/rtc/12353/WebQNAudioMusicMixer)。

> 当前**仅支持一个麦克风 track 混一路音频** ，重复针对同一个麦克风 track 创建不同的
> [QNAudioMusicMixer](https://developer.qiniu.com/rtc/12353/WebQNAudioMusicMixer)
> 并执行 start 操作，后面的会覆盖前面的，即以后执行 start 的音频混音控制器为准进行混音。

# 多音效混音

## 创建 createAudioEffectMixer

SDK 当前仅支持基于
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/api/9064/WebQNMicrophoneAudioTrack)
的多重音效混音功能，可以通过
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/api/9064/WebQNMicrophoneAudioTrack)
接口来创建 [QNAudioEffectMixer](https://developer.qiniu.com/rtc/12357/background-
music-mix-web-new/rtc/12350/WebQNAudioEffectMixer) 对象。

    
    
    const filePath = "/sdcard/music/example.mp3";
    const audioEffectMixer = mMicrophoneAudioTrack.createAudioEffectMixer()
    

`createAudioEffectMixer` 不仅支持文件地址，同时还支持 AudioBuffer 与 File 类型。

## 创建 QNAudioEffect

[QNAudioEffect](https://developer.qiniu.com/rtc/12352/WebQNAudioEffect)
为音效文件的配置类，可通过
[QNAudioEffectMixer.createAudioEffect](https://developer.qiniu.com/rtc/12350/WebQNAudioEffectMixer#createAudioEffect)
接口进行创建，每一个音效文件都需对应一个
[QNAudioEffect](https://developer.qiniu.com/rtc/12352/WebQNAudioEffect)
实例，使用代码参考如下：

    
    
    const filePath = "/sdcard/effect.mp3";
    const effectID = "test";
    const audioEffect = mAudioEffectMixer.createAudioEffect(effectID, filePath);
    

**其中，effectID 为音效文件的唯一标识符，可自行生成并维护，该标识符为控制一系列音效混音操作的依据，需保证唯一。**

## 混音控制

    
    
    // 开始指定音效混音
    mAudioEffectMixer.start(audioEffect.getID());
    // 停止指定音效混音
    mAudioEffectMixer.stop(audioEffect.getID());
    // 恢复指定音效混音
    mAudioEffectMixer.resume(audioEffect.getID());
    // 暂停指定音效混音
    mAudioEffectMixer.pause(audioEffect.getID());
    // 停止所有正在混音的音效
    mAudioEffectMixer.stopAll();
    // 暂停所有正在混音的音效
    mAudioEffectMixer.pauseAll();
    // 恢复所有已经暂停混音的音效
    mAudioEffectMixer.resumeAll();
    

# 音量控制

混音场景下，主要包含三种音量设置：麦克风混音音量、音效/音乐混音音量、本地播放音量。三种音量的设置方式参考如下：

  * **麦克风混音音量** ：可以通过 [QNMicrophoneAudioTrack.setVolume](https://developer.qiniu.com/rtc/9064/WebQNMicrophoneAudioTrack#setVolume) 接口进行配置。

  * **音效混音音量** ：可以通过 [QNAudioEffectMixer.setVolume](https://developer.qiniu.com/rtc/12350/WebQNAudioEffectMixer#setVolume) 和 [QNAudioEffectMixer.setAllEffectsVolume](https://developer.qiniu.com/rtc/12350/WebQNAudioEffectMixer#setAllEffectsVolume) 接口分别对指定音效和所有音效进行音量配置。

  * **背景音乐混音音量** ：可以通过 [QNAudioMusicMixer.setMixingVolume](https://developer.qiniu.com/rtc/12353/WebQNAudioMusicMixer#setMixingVolume) 进行音量设置。

  * **本地播放音量** ：可以通过 [QNMicrophoneAudioTrack.setPlayingVolume](https://developer.qiniu.com/rtc/9064/WebQNMicrophoneAudioTrack#setPlayingVolume) 接口进行配置，需要注意的是，播放音量是基于混音后的音频进行调整的，会受到混音音量调整的影响。

参考代码如下：

    
    
    mMicrophoneAudioTrack.setVolume(0.5);                  // 设置麦克风采集(混音)音量
    mMicrophoneAudioTrack.setPlayingVolume(0.5);           // 设置混音后本地播放的音量
    mAudioEffectMixer.setVolume(audioEffect.getID(), 0.5); // 设置指定音效的混音音量
    mAudioEffectMixer.setAllEffectsVolume(0.5);            // 设置所有音效的混音音量
    mAudioMusicMixer.setMixingVolume(0.5);                 // 设置背景音乐的混音音量                    
    
    

# 耳返

若您在混音场景下，有开启返听的需要，则可以通过
[QNMicrophoneAudioTrack.setEarMonitorEnabled](https://developer.qiniu.com/rtc/9064/WebQNMicrophoneAudioTrack#setEarMonitorEnabled)
接口进行开启，参考代码如下：

    
    
    mMicrophoneAudioTrack.setEarMonitorEnabled(true); // 开启返听
    

> 为达到最佳体验，建议在佩戴耳机的情况下使用该功能

以上内容是否对您有帮助？