跳到主要内容

混音

混音功能支持将指定的音频文件与本地麦克风采集的音频数据进行混合,支持的用户自定义音频文件格式为:MP3、AAC、M4A、WAV。

Android 平台在调用之前应用必须已经授予 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 权限。 iOS 平台无特殊需求。

提示

如果 Android 10 手机上授予了权限后也出现了混音失败,请参考知识库 为什么 Android 10 无法使用 startAudioMixing 进行混音?

设置混音状态监听

设置开始混音事件回调

方法

Dart
RCRTCEngine.onAudioMixingStarted

示例代码

Dart
/// 设置开始混音监听
engine.onAudioMixingStarted = () {
// 开始混音
print('开始混音');
};

设置暂停混音事件回调

方法

Dart
RCRTCEngine.onAudioMixingPaused

示例代码

Dart
/// 设置暂停混音监听
engine.onAudioMixingPaused = () {
// 暂停混音
print('暂停混音');
};

设置停止混音事件回调

方法

Dart
RCRTCEngine.onAudioMixingStopped

示例代码

Dart
/// 设置停止混音监听
engine.onAudioMixingStopped = () {
// 停止混音
print('停止混音');
};

设置混音完成事件回调

方法

Dart
RCRTCEngine.onAudioMixingFinished

示例代码

Dart
/// 设置混音文件已自动混流完成监听
engine.onAudioMixingFinished = () {
// 混音文件已自动混流完成
print('混音文件已自动混流完成');
};

从资源目录下的音频文件进行混音

方法

Dart
RCRTCEngine.startAudioMixingFromAssets();

参数说明

参数类型必填说明
pathString文件的资源路径,如 /assets/audio/music.mp3
modeRCRTCAudioMixingMode混音模式
playBackbool在调用该方法后是否播放音频文件
loopCountint循环次数,-1表示无限循环,0表示播放一次,>0表示循环指定次数

混音模式说明

模式说明
RCRTCAudioMixingMode.mix将音频文件的音频数据与麦克风采集的数据混音发送至对端
RCRTCAudioMixingMode.replace将麦克风采集的数据替换为音频文件的音频数据发送至对端
RCRTCAudioMixingMode.none不做任何操作

示例代码

Dart
engine.startAudioMixingFromAssets(path, RCRTCAudioMixingMode.mix, true, -1);

从本地目录下的音频文件进行混音

方法

Dart
RCRTCEngine.startAudioMixing();

参数说明

参数类型必填说明
pathString文件的本地绝对路径
modeRCRTCAudioMixingMode混音模式
playBackbool在调用该方法后是否播放音频文件
loopCountint循环次数,-1表示无限循环,0表示播放一次,>0表示循环指定次数

示例代码

Dart
engine.startAudioMixing(path, RCRTCAudioMixingMode.mix, true, -1);

调节混音音量

方法

Dart
RCRTCEngine.adjustAudioMixingVolume();

参数说明

参数类型必填说明
volumeint混音音量,即对端听到的声音音量,取值范围0~100

示例代码

Dart
engine.adjustAudioMixingVolume(80);

调节播放音量

方法

Dart
RCRTCEngine.adjustAudioMixingPlaybackVolume();

参数说明

参数类型必填说明
volumeint播放音量,即本端听到的声音音量,取值范围0~100

示例代码

Dart
engine.adjustAudioMixingPlaybackVolume(80);

获取混音文件时长

方法

Dart
RCRTCEngine.getAudioMixingDuration();

返回值

类型说明
int当前指定的混音文件的总时长,单位毫秒,返回值小于 0 表示接口调用失败

示例代码

Dart
int duration = await engine.getAudioMixingDuration();

获取混音进度

方法

Dart
RCRTCEngine.getAudioMixingPosition();

返回值

类型说明
double当前的混音进度,取值范围0~1.0,返回值小于 0 表示接口调用失败

示例代码

Dart
double position = await engine.getAudioMixingPosition();

设置混音进度

方法

Dart
RCRTCEngine.setAudioMixingPosition();

参数说明

参数类型必填说明
positiondouble混音进度,取值范围0~1.0

示例代码

Dart
/// 设置从当前文件的 20% 进度处开始混音
engine.setAudioMixingPosition(0.2);

暂停混音

方法

Dart
RCRTCEngine.pauseAudioMixing();

示例代码

Dart
engine.pauseAudioMixing();

继续混音

方法

Dart
RCRTCEngine.resumeAudioMixing();

示例代码

Dart
engine.resumeAudioMixing();

停止混音

方法

Dart
RCRTCEngine.stopAudioMixing();

示例代码

Dart
engine.stopAudioMixing();