实时音视频

  • 实时音视频 > 使用指南 > Linux >背景音乐混音

    背景音乐混音

    最近更新时间: 2022-06-20 15:19:48

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

    • 背景音乐混音支持本地文件和在线文件,支持的音频文件格式为:aac、mp3、mp4、ogg、opus、wav、m4a、flac
    • 请尽量使用本地音乐文件,避免因为网络资源的异常导致的混音卡顿等情况

    使用方式如下:

    创建 QNAudioMusicMixer

    SDK 当前仅支持基于 QNMicrophoneAudioTrack 的混音功能,可以通过 QNMicrophoneAudioTrack.CreateAudioMusicMixer 来创建 QNAudioMusicMixer 对象

    std::string file_path = "../example.mp3";
    QNAudioMusicMixer* audio_mixer = microphone_audio_track->CreateAudioMusicMixer(file_path, listener);
    

    其中,QNAudioMusicMixerListener 为混音状态监听器,监听回调定义如下:

    class QINIU_EXPORT_DLL QNAudioMusicMixerListener {
     public:
      /**
       * 错误回调
       * 
       * @param error_code 错误码
       * @param error_message 错误信息
       */
      virtual void OnAudioMusicMixerError(int error_code,
                                          const std::string& error_message) = 0;
      /**
       * 背景音乐混音状态变化回调
       *
       * @param music_state_ 背景音乐混音状态
       */
      virtual void OnAudioMusicMixerStateChanged(QNMusicMixerState music_state) = 0;
    
      /**
       * 背景音乐播放进度回调
       *
       * @param current_pos 背景音乐播放当前进度
       */
      virtual void OnAudioMusicMixing(int64_t current_pos) = 0;
    
     protected:
      ~QNAudioMusicMixerListener(){};
    };
    

    其中,混音状态的改变都会通过 QNAudioMusicMixerListener.OnAudioMusicMixerStateChanged 回调通知到上层。回调的监听状态可参考 QNMusicMixerState。混音场景下的错误码可参考混音相关错误码

    混音控制

    在创建了 QNAudioMusicMixer 实例后,可以通过该实例提供的混音控制接口进行混音操作的控制,使用代码参考如下:

    // 开始混音,成功后会触发 QNMusicMixerState.kStateMixing 状态的回调
    mAudioMixer->Start();
    // 停止混音,成功后会触发 QNMusicMixerState.kStateStopped 状态的回调
    mAudioMixer->Stop();
    // 恢复混音,成功后会触发 QNMusicMixerState.kStateMixing 状态的回调
    mAudioMixer->Resume();
    // 暂停混音,成功后会触发 QNMusicMixerState.kStatePaused 状态的回调
    mAudioMixer->Pause();
    // 跳到指定位置进行混音,成功后回触发 QNMusicMixerState.kStateMixing 状态的回调
    mAudioMixer->SeekTo(position_ms);
    

    上述为混音基本流程的控制,更多控制方式请参考 QNAudioMusicMixer

    音量控制

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

    参考代码如下:

    microphone_audio_track->SetVolume(0.5f);          // 设置麦克风采集(混音)音量
    audio_music_mixer->SetMixingVolume(0.5f);         // 设置背景音乐的混音音量
    

    切换音乐

    背景音乐混音仅支持同时混合一路背景音乐,若需要切换背景音乐,可通过重新调用 QNMicrophoneAudioTrack.CreateAudioMusicMixer 创建 QNAudioMusicMixer 实例实现。参考代码如下:

    // 使用 music-1 进行混音
    QNAudioMusicMixer* audio_music_mixer = microphone_audio_track->CreateAudioMusicMixer(music1_file_path, listener); // 创建基于 music-1 的混音控制器
    audio_music_mixer->Start();  // 开始 music-1 的混音
    audio_music_mixer->Stop();   // 停止 music-1 的混音
    microphone_audio_track->DestroyAudioMusicMixer(audio_music_mixer);  // 销毁第一个 mixer
    // 切换音乐到 music-2 进行混音
    audio_music_mixer = microphone_audio_track->CreateAudioMusicMixer(music2_file_path, listener); // 创建基于 music-2 的混音控制器
    audio_music_mixer->Start();  // 开始 music-2 的混音
    audio_music_mixer->Stop();   // 停止 music-2 的混音
    

    注意事项

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