混音伴奏

更新时间:2021-05-26

概述

SDK 支持混音功能,例如添加音效,或者播放背景音乐等,使用 SDK 混音伴奏功能,可以同时将音频数据和麦克风采集的数据混音之后进行发送。

说明

开启混音伴奏后,拉流端可以同时播放远端麦克风采集音频数据和混音伴奏音频数据。

diy_audio_extra

使用步骤

开启混音伴奏

在确保登录房间并已经开始推流后,获取指定一个 MP3 路径,然后调用 startAudioMixing 方法,就可以开启混音。

/**
 * 开始播放音乐文件及混音(声音伴奏)
 * @param filePath      String类型,文件路径
 * @param mode       指定伴奏模式,详见mode定义{@link LVConstants.LVAudioMixingMode}
 * @param loop      int类型,指定音频文件循环播放的次数,正整数:循环的次数 -1:无限循环
 * @return      int类型,0 : 方法调用成功,!0:失败
 */
mRtcEngine.startAudioMixing("/assets/audio.mp3", LVConstants.LVAudioMixingMode.SEND_ONLY, -1);

// 音频混音模式支持
public enum LVAudioMixingMode {
    /**
     * 伴奏音乐只用于发送,本地听不到伴奏音乐,远端可听到
     */
    SEND_ONLY(1 << 1),
    /**
     * 伴奏音乐只用于本地播放,远端听不到伴奏音乐
     */
    PLAYOUT_ONLY(1 << 2),
    /**
     * 伴奏音乐本地和远端都可听到
     */
    SEND_AND_PLAYOUT(SEND_ONLY.value | PLAYOUT_ONLY.value),
    /**
     * 替换microphone采集声音,本地和远端都只播放伴奏音乐
     */
    REPLACE_MIC(1 << 0 | SEND_AND_PLAYOUT.value),
    /**
     * 伴奏替换microphone采集声音,同时伴奏声音只用于发送
     */
    REPLACE_MIC_AND_SEND_ONLY(1 << 0 | SEND_ONLY.value);

    private int value;

    LVAudioMixingMode(int value) {
        this.value = value;
    }

    public int value() {
        return this.value;
    }
}

暂停/恢复混音

/**
 * 暂停播放音乐文件及混音。请在房间内调用该方法。
 * @return 0:方法调用成功 !0:方法调用失败
 */
mRtcEngine.pauseAudioMixing();

停止混音

/**
 * 停止播放音乐文件及混音。请在房间内调用该方法。
 * @return      int类型,0:方法调用成功 !0:方法调用失败
 */
mRtcEngine.stopAudioMixing();

相关 API

获取伴奏音量

/**
 * 获取当前伴奏音量,请在伴奏开始后调用。
 * @return      int类型,-1:伴奏未开始 0~100:当前伴奏音量
 */
mRtcEngine.getAudioMixingVolume();

调整伴奏音乐播放音量

/**
 * 调节音乐文件的播放音量。请在房间内调用该方法。
 * @param volume        int类型,音量:0~100
 * @return      int类型,0:方法调用成功 !0:方法调用失败
 */
mRtcEngine.adjustAudioMixingVolume(100);

设置音乐文件的播放位置

/**
 * 设置音乐文件的播放位置。请在房间内调用该方法。
 * @param pos       int类型,进度条位置,单位毫秒
 * @return      int类型,0:方法调用成功 !0:方法调用失败
 */
mRtcEngine.setAudioMixingPosition(200);

获取当前伴奏文件总时长

/**
 *  获取当前伴奏文件总时长,单位毫秒。请在房间内调用该方法。
 *  @return      long类型,文件总时长
 */
mRtcEngine.getAudioMixingTotalLength();

获取当前音乐播放进度

/**
 *  获取音乐文件的播放进度。单位毫秒。请在房间内调用该方法。
 *  @return      long类型,<0:方法调用失败 >=0:方法调用成功并返回伴奏播放进度
 */
mRtcEngine.getAudioMixingCurrentPosition();