实时音视频

  • 实时音视频 > 使用指南 > Linux >多音效混音

    多音效混音

    最近更新时间: 2022-06-20 15:34:30

    本文主要介绍连麦过程中添加多重音效混音的使用场景。

    • 音效混音支持本地文件和在线文件,支持的音频格式为: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

    音量控制

    混音场景下,主要包含两种音量设置:麦克风混音音量音效混音音量。音量的设置方式参考如下:

    参考代码如下:

    microphone_audio_track.SetVolume(0.5f);                  // 设置麦克风采集(混音)音量
    audio_effect_mixer->SetVolume(audio_effect.GetID(), 0.5f); // 设置指定音效的混音音量
    audio_effect_mixer->SetAllEffectsVolume(0.5f);            // 设置所有音效的混音音量
    

    注意事项

    1. 混音功能会将混音音频与当前已发布的音频 Track 数据混合并推送出去,若当前的音频 Track 尚未发布,则混音操作将失效。
    以上内容是否对您有帮助?
  • Qvm free helper
    Close