实时音视频

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

    背景音乐混音

    最近更新时间:2021-11-26 15:47:40

    本文主要介绍背景音乐混音功能的使用。

    用户可在连麦过程中通过混音功能添加背景音乐,支持 MP3、AAC 等格式的本地或在线音乐。

    • 请尽量使用本地音乐文件,避免因为网络资源的异常导致的混音卡顿等情况

    创建 QNAudioMixer

    SDK 当前仅支持基于 QNMicrophoneAudioTrack 的混音功能,因此,可以通过 QNMicrophoneAudioTrack 创建 QNAudioMixer 对象

    String filePath = "/sdcard/music/example.mp3";
    QNAudioMixer audioMixer = mMicrophoneAudioTrack.createAudioMixer(filePath, mAudioMixerListener);
    

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

    public interface QNAudioMixerListener {
        /**
         * 混音状态改变时会回调
         *
         * @param state 当前状态
         */
        void onStateChanged(QNAudioMixerState state);
    
        /**
         * 混音操作进行过程中会回调
         *
         * @param currentTimeUs 当前正在执行混音操作的音频帧时间戳
         */
        void onMixing(long currentTimeUs);
    
        /**
         * 混音操作发生错误时会回调
         *
         * @param errorCode 错误码
         */
        void onError(int errorCode);
    }
    

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

    混音控制

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

    // 开始混音,成功后会触发 QNAudioMixerState.MIXING 状态的回调
    mAudioMixer.start();
    // 停止混音,成功后会触发 QNAudioMixerState.STOPPED 状态的回调
    mAudioMixer.stop();
    // 恢复混音,成功后会触发 QNAudioMixerState.MIXING 状态的回调
    mAudioMixer.resume();
    // 暂停混音,成功后会触发 QNAudioMixerState.PAUSED 状态的回调
    mAudioMixer.pause();
    

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

    注意事项

    1. 当前仅支持同一时间混一路音频,重复对不同的 QNAudioMixer 执行 start 操作,以后执行 start 的 QNAudioMixer 为准进行混音。
    2. 混音功能会将混音音乐与当前已发布的音频 Track 数据混合并推送出去,若当前的音频 Track 尚未发布,则混音操作将失效。
    3. 背景音乐混音功能建议在佩戴耳机的情况下使用,在使用前必须将混音模块动态库 libqndroid_amix.so 导入项目。需要注意的是 SDK 内部播放器的音量控制采用了 Android 5.0 以上设置播放音量相关的 API,所以存在设置背景音量对部分低版本机型在本地播放时可能会失效,但在远端听到的是设置好的音量的情况,故混音功能推荐在 Android 5.0 以上的机型中使用以获得最好的体验。
    以上内容是否对您有帮助?
  • Qvm free helper
    Close