startAudioMixing method

Future<void> startAudioMixing (
  1. String filePath,
  2. bool loopback,
  3. bool replace,
  4. int cycle
)

开始播放音乐文件及混音。

该方法指定本地或在线音频文件来和麦克风采集的音频流进行混音或替换。替换是指用音频文件替换麦克风采集的音频流。 该方法可以选择是否让对方听到本地播放的音频,并指定循环播放的次数。 成功调用该方法后,本地会触发 RtcEngineEventHandler.audioMixingStateChanged 回调且状态码为 AudioMixingStateCode.Playing。 播放结束后,会收到 RtcEngineEventHandler.audioMixingStateChanged 回调且状态码为 AudioMixingStateCode.Stopped

Note

  • 该方法在 Android 和 iOS 均可调用。如需在 Android 平台调用该方法,请确保使用 Android 4.2 或以上设备,且 API Level ≥ 16。
  • 请在频道内调用该方法,如果在频道外调用该方法可能会出现问题。
  • 如果播放的是在线音乐文件,请确保重复调用该 API 的间隔超过 100 ms,否则 SDK 会返回 AudioMixingErrorCode.TooFrequentCall = 702 警告码, 表示音乐文件打开过于频繁。
  • 如果播放的是在线音乐文件,Agora 建议不要使用重定向地址。重定向地址在某些机型上可能会出现无法打开的情况。
  • 如果本地音乐文件不存在、文件格式不支持、无法访问在线音乐文件 URL 都会返回警告码 AudioMixingErrorCode.CanNotOpen = 701。
  • 如果在模拟器上使用该 API,暂时只支持存放在 /sdcard/ 中的 mp3 文件。

Parameter filePath 指定需要混音的本地或在线音频文件的绝对路径(包含文件名后缀),如 /sdcard/emulated/0/audio.mp4。支持的音频格式包括:mp3、mp4、m4a、aac、3gp、mkv 及 wav。

  • 如果用户提供的目录以 /assets/ 开头,则去 assets 里面查找该文件。
  • 如果用户提供的目录不是以 /assets/ 开头,一律认为是在绝对路径里查找该文件。

Parameter loopback

  • true:只有本地可以听到混音或替换后的音频流。
  • false:本地和对方都可以听到混音或替换后的音频流。

Parameter replace

  • true:只推动设置的本地音频文件或者线上音频文件,不传输麦克风收录的音频。
  • false:音频文件内容将会和麦克风采集的音频流进行混音。

Parameter cycle 音频文件循环播放的次数:

  • 正整数:循环的次数。
  • -1:无限循环。

Implementation

@override
Future<void> startAudioMixing(
    String filePath, bool loopback, bool replace, int cycle) {
  return _invokeMethod('startAudioMixing', {
    'filePath': filePath,
    'loopback': loopback,
    'replace': replace,
    'cycle': cycle
  });
}