跳到主要内容

混音

从音频文件混音

  1. 混音功能支持将用户自定义的音频数据、音频文件与本地麦克风采集的音频数据进行混合。支持的用户自定义音频文件或网络音源格式有:MP3、AAC、M4A、WAV。

  2. 加入房间并发布默认资源 (RCRTCEngine.Publish()) 成功后,调用 RCRTCEngine.StartAudioMixing 方法使用指定的音频文件混音,退出房间前需要调用 RCRTCEngine.StopAudioMixing 结束混音。

提示

调用之前应用必须已经授予 <uses-permission android: name="android.permission.READ_EXTERNAL_STORAGE" /> 权限。 如果 Android 10 手机上授予了权限后也出现了混音失败,请参考知识库 为什么 Android 10 无法使用 startMix 进行混音?

  • 参数说明:

    参数类型说明
    pathString文件的绝对路径,如
    Android: file:///android_asset/music.mp3
    iOS: file:////var/mobile/Containers/Data/Application/.../music.mp3
    modeRCRTCAudioMixerMode混音模式
    Mode.NONE: 不做任何操作
    MIX: 将音频文件的音频数据与麦克风采集的数据混音发送至对端
    REPLACE: 将麦克风采集的数据替换为音频文件的音频数据发送至对端
    playBackboolean在调用该方法后是否播放音频文件
    loopCountintloopCount > 0 : 循环混音 loopCount 次;loopCount = -1 : 无限循环;其他取值:混音一次
  • 示例代码:

    String audioFile = "/sdcard/emulated/0/music.mp3";
    Engine.StartAudioMixing(audioFile, RCRTCAudioMixingMode.MIX, true, -1);
    // 调节混音音量(修改的是对端听到的声音音量)
    Engine.AdjustAudioMixingVolume(80);
    // 调节播放音量(修改的是本端听到的声音音量)
    Engine.AdjustAudioMixingPlaybackVolume(80);
    // 获取混音文件播放总时长(秒)
    Engine.GetAudioMixingDuration();
    // 获取混音进度,例如 0.2 表示播放了 20%
    Engine.GetAudioMixingPosition();
    // 调节混音进度,例如 0.2 表示调节至 20% 处开始播放
    Engine.SetAudioMixingPosition(double position);
    // 暂停混音
    Engine.PauseAudioMixing();
    // 继续混音
    Engine.ResumeAudioMixing();
    // 停止混音
    Engine.StopAudioMixing();

设置混音状态监听

开始混音、暂停/继续混音、结束混音、混音文件已自动混流完成等状态监听。

Engine.OnAudioMixingStarted = () => {
// 混音开始
}
Engine.OnAudioMixingPaused = () => {
// 混音暂停
}
Engine.OnAudioMixingStopped = () => {
// 混音停止
}
Engine.OnAudioMixingFinished = () => {
// 混音完成
}