多音效混音
本文主要介绍连麦过程中添加多重音效混音的使用场景。
- 音效混音支持本地文件和在线文件,支持的音频格式为:aac、mp3、mp4、ogg、opus、wav、m4a、flac
- 请尽量使用本地音乐文件,避免因为网络资源的异常导致的混音卡顿等情况
使用方式如下:
创建 QNAudioEffectMixer
SDK 当前仅支持基于 QNMicrophoneAudioTrack 的多重音效混音功能,可以通过 QNMicrophoneAudioTrack.CreateAudioEffectMixer 接口来创建 QNAudioEffectMixer 对象
QNAudioEffectMixer* audio_effect_mixer = microphone_audio_track.CreateAudioEffectMixer(listener);
其中,QNAudioEffectMixerListener 为音效混音监听器,监听回调定义如下:
class QINIU_EXPORT_DLL QNAudioEffectMixerListener {
public:
/**
* 错误回调
*
* @param error_code 错误码
* @param error_message 错误信息
*/
virtual void OnAudioEffectMixerError(int error_code,
const std::string& error_message) = 0;
/**
* 某音效播放完成的回调
*
* @param effect_id 音效 id
*/
virtual void OnAudioEffectFinished(int effect_id) = 0;
protected:
~QNAudioEffectMixerListener(){};
};
其中,混音场景下的错误码可参考混音相关错误码
创建 QNAudioEffect
QNAudioEffect 为音效文件的配置类,可通过 QNAudioEffectMixer.CreateAudioEffect 接口进行创建,每一个音效文件都需对应一个 QNAudioEffect 实例,使用代码参考如下:
string file_path = "../effect.mp3";
QNAudioEffect* audio_effect = audio_effect_mixer->CreateAudioEffect(effect_id, file_path);
其中,effect_id 为音效文件的唯一标识符,可自行生成并维护,该标识符为控制一系列音效混音操作的依据,需保证唯一。
混音控制
在创建了 QNAudioEffectMixer 音效混音控制器实例和 QNAudioEffect 音效文件实例后,可以通过如下接口进行音效混音操作的控制。
使用代码参考如下:
// 开始指定音效混音
audio_effect_mixer->Start(audio_effect.GetID());
// 停止指定音效混音
audio_effect_mixer->Stop(audio_effect.GetID());
// 恢复指定音效混音
audio_effect_mixer->Resume(audio_effect.GetID());
// 暂停指定音效混音
audio_effect_mixer->Pause(audio_effect.GetID());
// 停止所有正在混音的音效
audio_effect_mixer->StopAll();
// 暂停所有正在混音的音效
audio_effect_mixer->PauseAll();
// 恢复所有已经暂停混音的音效
audio_effect_mixer->ResumeAll();
上述为混音基本流程的控制,更多控制方式请参考 QNAudioEffectMixer。
音量控制
混音场景下,主要包含两种音量设置:麦克风混音音量、音效混音音量。音量的设置方式参考如下:
- 麦克风混音音量:可以通过 QNMicrophoneAudioTrack->SetVolume 接口进行配置。
- 音效混音音量:可以通过 QNAudioEffectMixer.SetVolume 和 QNAudioEffectMixer.SetAllEffectsVolume 接口分别对指定音效和所有音效进行音量配置。
参考代码如下:
microphone_audio_track.SetVolume(0.5f); // 设置麦克风采集(混音)音量
audio_effect_mixer->SetVolume(audio_effect.GetID(), 0.5f); // 设置指定音效的混音音量
audio_effect_mixer->SetAllEffectsVolume(0.5f); // 设置所有音效的混音音量
注意事项
- 混音功能会将混音音频与当前已发布的音频 Track 数据混合并推送出去,若当前的音频 Track 尚未发布,则混音操作将失效。
文档反馈
(如有产品使用问题,请 提交工单)