混音伴奏

更新时间:2021-05-26

概述

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

说明

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

diy_audio_extra

使用步骤

开启混音伴奏

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

/* 获取 MP3 路径 */
NSString *audioPath = [[NSBundle mainBundle] pathForResource:@"audio" ofType:@"mp3"];

/// 开始播放音乐文件及混音(声音伴奏)
/// @param filePath 文件路径
/// @param mode LVAudioMixingMode,混音模式
/// @param loop 音频文件循环播放的次数,正整数:循环次数 -1:无限循环
/// @return 0 : 成功,!0:失败
-(int)startAudioMixing:(NSString*)filePath mode:(LVAudioMixingMode)mode loop:(int)loop;



/**
 音频混音模式
 */
typedef enum : NSUInteger {
    /**
     * 伴奏音乐只用于发送,本地听不到伴奏音乐,远端可听到
     */
    LVAudioMixingMode_SEND_ONLY = (1 << 1),
    /**
     * 伴奏音乐只用于本地播放,远端听不到伴奏音乐
     */
    LVAudioMixingMode_PLAYOUT_ONLY = (1 << 2),
    /**
     * 伴奏音乐本地和远端都可听到
     */
    LVAudioMixingMode_SEND_AND_PLAYOUT = (LVAudioMixingMode_SEND_ONLY | LVAudioMixingMode_PLAYOUT_ONLY),
    /**
     * 替换microphone采集声音,本地和远端都只播放伴奏音乐
     */
    LVAudioMixingMode_REPLACE_MIC = (1 << 0 | LVAudioMixingMode_SEND_AND_PLAYOUT),
    /**
     * 伴奏替换microphone采集声音,同时伴奏声音只用于发送
     */
    LVAudioMixingMode_REPLACE_MIC_AND_SEND_ONLY = (1 << 0 | LVAudioMixingMode_SEND_ONLY)

} LVAudioMixingMode;



暂停/恢复混音

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

停止混音

/*
 * 停止播放音乐文件及混音。请在房间内调用该方法。
 * @return 0:成功 !0:失败
 */
[[LVRTCEngine sharedInstance] stopAudioMixing];

相关 API

获取伴奏音量

/*
 * 获取当前伴奏音量,请在伴奏开始后调用
 * @return -1:伴奏未开始 0~100:当前伴奏音量
 */
[[LVRTCEngine sharedInstance] getAudioMixingVolume];

调整伴奏音乐播放音量

/*
 * 调节音乐文件的播放音量。请在房间内调用该方法。
 * @param volume 音量:0~100
 * @return 0:成功 !0:失败
 */
[[LVRTCEngine sharedInstance] adjustAudioMixingVolume:20];

设置音乐文件的播放位置

/*
 * / 设置音乐文件的播放位置。请在房间内调用该方法。
 * / @param pos 整数。进度条位置,单位毫秒
 * / @return 0:成功 !0:失败
 */
[[LVRTCEngine sharedInstance] setAudioMixingPosition:200];

获取当前伴奏文件总时长

/*
 * 获取当前伴奏文件总时长,单位毫秒。请在房间内调用该方法。
 * @return 文件长度
 */
[[LVRTCEngine sharedInstance] getAudioMixingTotalLength];

获取当前音乐播放进度

/*
 * / 获取音乐文件的播放进度。单位毫秒。请在房间内调用该方法。
 * / @return <0:失败 >=0:成功并返回伴奏播放进度
 */
[[LVRTCEngine sharedInstance] getAudioMixingCurrentPosition];