human: 如何处理七牛云的实时音视频QNAudioEffectMixer

gpt: [实时音视频](https://developer.qiniu.com/rtc) > API 文档 > Linux >QNAudioEffectMixer

#  QNAudioEffectMixer

最近更新时间: 2022-06-20 14:40:28

音效混音控制类，提供了控制音效混音的一系列方法。

> 1\. 当前仅支持基于
> [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-
> Linux/11210/QNMicrophoneAudioTrack) 的音效混音操作
>
> 2\. 混音需要加入房间并且成功发布后才会生效，因此，需要注意调用的时机

Index

Core Methods

  * CreateAudioEffect
  * DestroyAudioEffect
  * Start
  * Stop
  * Pause
  * Resume
  * StopAll
  * PauseAll
  * ResumeAll
  * GetCurrentPosition
  * SetVolume
  * GetVolume
  * SetAllEffectsVolume

Core Methods

CreateAudioEffect

  * virtual [QNAudioEffect](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-Linux/11986/QNAudioEffect)* CreateAudioEffect(int effect_id, const std::string& file_path) = 0
  * 创建音效混音配置类实例，每一路参与混音的音效都需要对应一个 [QNAudioEffect](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-Linux/11986/QNAudioEffect) 实例

> 支持本地和在线文件，支持的文件格式为：aac、mp3、mp4、ogg、opus、wav、m4a、flac

Parameters

    * effect_id: int 

音效文件的唯一标识符，需自行生成并维护，且确保唯一

    * file_path: string 

音效文件地址，支持本地文件和在线文件

Returns 音效混音实例指针

DestroyAudioEffect

  * virtual void DestroyAudioEffect([QNAudioEffect](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-Linux/11986/QNAudioEffect)* ptr) = 0
  * 销毁 [QNAudioEffect](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-Linux/11986/QNAudioEffect)* 实例指针

Parameters

    * ptr: [QNAudioEffect](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-Linux/11986/QNAudioEffect)* 

音效混音实例指针

Start

  * virtual bool Start(int effect_id) = 0
  * 开始音效混音

混音的次数可以通过
[QNAudioEffect.SetLoopCount](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-
Linux/11986) 接口配置

混音结束时会触发
[QNAudioEffectMixerListener.OnAudioEffectFinished](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-
Linux/11988) 回调

混音出错会触发
[QNAudioEffectMixerListener.OnAudioEffectMixerError](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-
Linux/11988) 回调

Parameters

    * effect_id: int 

音效文件的唯一标识符

Returns 接口是否调用成功

Stop

  * virtual bool Stop(int effect_id) = 0
  * 停止音效混音

Parameters

    * effect_id: int 

音效文件的唯一标识符

Returns 接口是否调用成功

Pause

  * virtual bool Pause(int effect_id) = 0
  * 暂停音效混音

Parameters

    * effect_id: int 

音效文件的唯一标识符

Returns 接口是否调用成功

Resume

  * virtual bool Resume(int effect_id) = 0
  * 恢复音效混音

Parameters

    * effect_id: int 

音效文件的唯一标识符

Returns 接口是否调用成功

StopAll

  * virtual bool StopAll() = 0
  * 停止所有正在混音的音效

Returns 接口是否调用成功

PauseAll

  * virtual bool PauseAll() = 0
  * 暂停所有正在混音的音效

Returns 接口是否调用成功

ResumeAll

  * virtual bool ResumeAll() = 0
  * 恢复所有暂停混音的音效

Returns 接口是否调用成功

GetCurrentPosition

  * virtual int64_t GetCurrentPosition(int effect_id) = 0
  * 获取指定音效混音的位置，单位: ms

Parameters

    * effect_id: int 

音效文件的唯一标识符

Returns 指定音效混音的位置，单位: ms

SetVolume

  * virtual void SetVolume(int effect_id, float volume) = 0
  * 设置指定音效的混音音量，默认音量为 1.0f

> 若想修改混音中麦克风采集音频的音量，可通过
> [QNMicrophoneAudioTrack.SetVolume](https://developer.qiniu.com/rtc/11987/QNAudioEffectMixer-
> Linux/11210) 接口实现

Parameters

    * effect_id: int 

音效文件的唯一标识符

    * volume: float 

音效的混音音量，[0.0f - 1.0f]

GetVolume

  * virtual float GetVolume(int effect_id) = 0
  * 获取指定音效的混音音量

Parameters

    * effect_id: int 

音效文件的唯一标识符

Returns 指定音效的混音音量，[0.0f - 1.0f]

SetAllEffectsVolume

  * virtual void SetAllEffectsVolume(float volume) = 0
  * 设置所有正在混音的音效的混音音量

Parameters

    * volume: float 

音效的混音音量，[0.0f - 1.0f]

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