混音

本章节介绍混音相关的功能,通过阅读本章节你可以快速了解混音功能的调用方法和流程。混音是指在音视频通话和互动直播过程中,将本地的音频文件与本端采集的声音数据混音后发送出去,同时在本端播放出来的功能。 混音功能可以处理系统原生支持语音播放的音频文件类型,如 aacmp3mp4wav 等。 该功能支持设置文件播放次数发送音量播放音量,支持通话中开始暂停恢复更新停止文件混音

开始文件混音任务

在通话过程中,可以指定本地音频文件来和麦克风采集的音频流进行混音或者替换。

开启本地语音伴音,可以通过参数指定是否循环,替换本地语音,以及初始音量[0.0f - 1.0f]。

    /**
     * 指定本地音频文件来和麦克风采集的音频流进行混音和替换
     *
     * @param filePath 本地文件路径
     * @param loopback 是否循环播放
     * @param replace  是否替换麦克风采集的音频数据
     * @param cycle    循环的次数
     * @param volume   音量[0.0f - 1.0f]
     * @return {@code true} 方法调用成功,{@code false} 方法调用失败
     */
    public abstract boolean startAudioMixing(String filePath,
                                             boolean loopback,
                                             boolean replace,
                                             int cycle,
                                             float volume);
参数 说明
filePath 本地文件路径。
loopback 是否循环播放。
replace 是否替换麦克风采集的音频数据。
cycle 循环的次数。
volume 音量[0.0f - 1.0f]。
AVChatManager.getInstance().startAudioMixing(filePath, loopback, replace, cycle, volume);

暂停文件混音任务

开始混音后可以暂停本地语音伴音。

    /**
     * 暂停伴音
     *
     * @return {@code true} 方法调用成功,{@code false} 方法调用失败
     */
    public abstract boolean pauseAudioMixing();
AVChatManager.getInstance().pauseAudioMixing();

恢复文件混音任务

恢复本地语音伴音,伴音文件将从暂停时位置开始播放。

    /**
     * 恢复伴音
     *
     * @return {@code true} 方法调用成功,{@code false} 方法调用失败
     */
    public abstract boolean resumeAudioMixing();
AVChatManager.getInstance().resumeAudioMixing();

停止文件混音任务

停止本地语音伴音。

    /**
     * 停止伴音
     *
     * @return {@code true} 方法调用成功,{@code false} 方法调用失败
     */
    public abstract boolean stopAudioMixing();
AVChatManager.getInstance().stopAudioMixing();

任务完成通知

伴音的状态通知 onAudioMixingEvent,事件类型为AUDIO_MIXING_ERROR以及 AUDIO_MIXING_FINISHED.

    /**
     * 伴音事件
     *
     * @see com.netease.nimlib.sdk.avchat.constant.AVChatAudioMixingEvent#MIXING_ERROR
     * @see com.netease.nimlib.sdk.avchat.constant.AVChatAudioMixingEvent#MIXING_FINISHED
     * @see com.netease.nimlib.sdk.avchat.constant.AVChatAudioMixingEvent#MIXING_STARTED
     * @see AVChatManager#startAudioMixing(String, boolean, boolean, int, float)
     * @see AVChatManager#stopAudioMixing()
     */
    void onAudioMixingEvent(int event);
参数 说明
event 伴音事件类型,参考AVChatAudioMixingEvent
    public void onAudioMixingEvent(int i) {
        LogUtil.d(TAG, "onAudioMixingEvent,i -> "+i);
        switch (i) {
            case AVChatAudioMixingEvent.MIXING_FINISHED:
                break;
            case AVChatAudioMixingEvent.MIXING_ERROR:
                break;
        }
    }