背景音乐/音效混音(新版)
本部分介绍背景音乐混音功能的使用
注意,自 SDK 4.2.0 版本开始,增加了新版本的背景音乐混音功能,本篇文档介绍新版本背景音乐混音的用法。如果想要查看旧版本背景音乐混音的用法,可以参考 背景音乐混音(旧版)。
背景音乐混音
用户可在连麦过程中通过混音功能添加背景音乐,支持 MP3、AAC 等格式的本地或在线音乐,使用方式如下:
创建 createAudioMusicMixer
SDK 当前仅支持基于 QNMicrophoneAudioTrack 的混音功能,因此,可以通过 QNMicrophoneAudioTrack 创建 QNAudioMusicMixer 对象。
const filePath = "/sdcard/music/example.mp3";
const musicAudioMixer = mMicrophoneAudioTrack.createAudioMusicMixer(filePath)
createAudioMusicMixer
不仅支持文件地址,同时还支持 AudioBuffer 与 File 类型。
音乐控制
在创建了 QNAudioMusicMixer 实例后,可以通过该实例提供的混音控制接口进行混音操作的控制,使用代码参考如下:
// 开始混音,成功后会触发 QNAudioMusicMixerState.MIXING 状态的回调
mAudioMixer.start();
// 停止混音,成功后会触发 QNAudioMusicMixerState.STOPPED 状态的回调
mAudioMixer.stop();
// 恢复混音,成功后会触发 QNAudioMusicMixerState.MIXING 状态的回调
mAudioMixer.resume();
// 暂停混音,成功后会触发 QNAudioMusicMixerState.PAUSED 状态的回调
mAudioMixer.pause();
// 跳到指定位置进行混音,成功后回触发 QNAudioMusicMixerState.MIXING 状态的回调
mAudioMixer.seekTo(positionMs);
上述为混音基本流程的控制,更多控制方式请参考 QNAudioMusicMixer。
当前仅支持一个麦克风 track 混一路音频,重复针对同一个麦克风 track 创建不同的 QNAudioMusicMixer 并执行 start 操作,后面的会覆盖前面的,即以后执行 start 的音频混音控制器为准进行混音。
多音效混音
创建 createAudioEffectMixer
SDK 当前仅支持基于 QNMicrophoneAudioTrack 的多重音效混音功能,可以通过 QNMicrophoneAudioTrack 接口来创建 QNAudioEffectMixer 对象。
const filePath = "/sdcard/music/example.mp3";
const audioEffectMixer = mMicrophoneAudioTrack.createAudioEffectMixer()
createAudioEffectMixer
不仅支持文件地址,同时还支持 AudioBuffer 与 File 类型。
创建 QNAudioEffect
QNAudioEffect 为音效文件的配置类,可通过 QNAudioEffectMixer.createAudioEffect 接口进行创建,每一个音效文件都需对应一个 QNAudioEffect 实例,使用代码参考如下:
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 接口进行配置。
-
音效混音音量:可以通过 QNAudioEffectMixer.setVolume 和 QNAudioEffectMixer.setAllEffectsVolume 接口分别对指定音效和所有音效进行音量配置。
-
背景音乐混音音量:可以通过 QNAudioMusicMixer.setMixingVolume 进行音量设置。
-
本地播放音量:可以通过 QNMicrophoneAudioTrack.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 接口进行开启,参考代码如下:
mMicrophoneAudioTrack.setEarMonitorEnabled(true); // 开启返听
为达到最佳体验,建议在佩戴耳机的情况下使用该功能