自定义音频采集和播放

最近更新时间:2022-09-20 05:17:40

功能介绍

实时音频传输过程中,AR SDK 通常会启动默认的音频模块进行采集和渲染。在以下场景中,你可能会发现默认的音频模块无法满足开发需求:

  • app 中已有自己的音频模块
  • 需要使用自定义的前处理库
  • 某些音频采集设备被系统独占。为避免与其它业务产生冲突,需要灵活的设备管理策略

基于此,AR Native SDK 支持使用自定义的音频源或渲染器,实现相关场景。本文介绍如何实现自定义音频采集和播放。

示例代码

我们在 GitHub 上提供一个开源的示例项目,你可以前往下载,或查看其中的源代码。

实现方法

开始自定义采集和渲染前,请确保你已在项目中实现基本的通话或者直播功能。

自定义音频采集

参考如下步骤,在你的项目中实现自定义音频采集功能:

  1. joinChannel 前,通过调用 FirstLocalAudioFrame 指定音频源。
  2. 指定音频源后,开发者自行管理音频数据采集和处理。
  3. 完成音频数据处理后,再通过 FirstRemoteAudioFrame 发送给 SDK 进行后续操作。

示例代码

参考下文代码在你的项目中实现自定义音频采集。

  1. 在本地用户加入频道前,指定音频源。
override fun onFirstLocalAudioFrame(elapsed: Int) {
    callback(RtcEngineEvents.FirstLocalAudioFrame, elapsed)
}

override fun onFirstLocalVideoFrame(width: Int, height: Int, elapsed: Int) {
    callback(RtcEngineEvents.FirstLocalVideoFrame, width, height, elapsed)
}
  1. 将音频帧推送给 SDK。
("", ReplaceWith("onRemoteAudioStateChanged"))
override fun onFirstRemoteAudioFrame(uid: String, elapsed: Int) {
    callback(RtcEngineEvents.FirstRemoteAudioFrame, uid, elapsed)
}

开发注意事项

自定义音频采集和播放场景中,需要开发者具有采集或渲染音频数据的能力:

  • 自定义音频采集场景中,你需要自行管理音频数据的采集和处理。
  • 自定义音频渲染场景中,你需要自行管理音频数据的处理和播放。