跳到主要内容

混音

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

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

提示

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

开启混音

  • 参数说明:

    参数类型说明
    pathString文件系统的绝对路径,如/sdcard/Android/data/***/files/effect_0.mp3。或把资源放到包内。Android放到Assets目录下,在资源名前加file:///android_asset,如file:///android_asset/effect_0.mp3。iOS需要获取MainBundlePath后再加资源名。
    modeRCRTCAudioMixingMode混音模式:

    RCRTCAudioMixingMode.Mixing:将音频文件的音频数据与麦克风采集的数据混音发送至对端

    RCRTCAudioMixingMode.Replace:将麦克风采集的数据替换为音频文件的音频数据发送至对端

    RCRTCAudioMixingMode.None:不做任何操作
    playBackboolean在调用该方法后是否播放音频文件
    loopCountnumberloopCount > 0 : 循环混音 loopCount 次;loopCount = -1 : 无限循环;其他取值:混音一次
  • 示例代码:

    rtcEngine.startAudioMixing(path, RCRTCAudioMixingMode.Mixing, true, -1);

调节混音音量

  • 参数说明:

    参数类型说明
    volumenumber混音音量,即对端听到的声音音量,取值范围0~100
  • 示例代码:

    rtcEngine.adjustAudioMixingVolume(80);

调节播放音量

  • 参数说明:

    参数类型说明
    volumenumber播放音量,即本端听到的声音音量,取值范围0~100
  • 示例代码:

    rtcEngine.adjustAudioMixingPlaybackVolume(80);

获取混音文件时长

  • 返回值说明:

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

    let duration = rtcEngine.getAudioMixingDuration();

获取混音进度

  • 返回值说明:

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

    let position = rtcEngine.getAudioMixingPosition();

设置混音进度

  • 参数说明:

    参数类型说明
    positiondouble混音进度,取值范围 0~1.0
  • 示例代码:

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

暂停混音

  • 示例代码:

    rtcEngine.pauseAudioMixing();

继续混音

  • 示例代码:

    rtcEngine.resumeAudioMixing();

停止混音

  • 示例代码:

    rtcEngine.stopAudioMixing();

设置混音状态监听

开始混音、暂停混音、停止混音和混音文件已自动混流完成的状态监听。

  • 示例代码:

    /// 设置开始混音监听
    rtcEngine.setOnAudioMixingStartedListener(() => {
    // 开始混音
    });

    /// 设置暂停混音监听
    rtcEngine.setOnAudioMixingPausedListener(() => {
    // 暂停混音
    });

    /// 设置停止混音监听
    rtcEngine.setOnAudioMixingStoppedListener(() => {
    // 停止混音
    });

    /// 设置混音文件已自动混流完成监听
    rtcEngine.setOnAudioMixingFinishedListener(() => {
    // 混音文件已自动混流完成
    });