功能介绍
实时音频传输过程中,AR SDK 通常会启动默认的音频模块进行采集和渲染。在以下场景中,你可能会发现默认的音频模块无法满足开发需求:
- app 中已有自己的音频模块
- 需要使用自定义的前处理库
- 某些音频采集设备被系统独占。为避免与其它业务产生冲突,需要灵活的设备管理策略
基于此,AR Native SDK 支持使用自定义的音频源或渲染器,实现相关场景。本文介绍如何实现自定义音频采集和播放。
示例代码
我们在 GitHub 上提供一个开源的示例项目,你可以前往下载,或查看其中的源代码。
实现方法
开始自定义采集和渲染前,请确保你已在项目中实现基本的通话或者直播功能。
自定义音频采集
参考如下步骤,在你的项目中实现自定义音频采集功能:
joinChannel
前,通过调用FirstLocalAudioFrame
指定音频源。- 指定音频源后,开发者自行管理音频数据采集和处理。
- 完成音频数据处理后,再通过
FirstRemoteAudioFrame
发送给 SDK 进行后续操作。
示例代码
参考下文代码在你的项目中实现自定义音频采集。
- 在本地用户加入频道前,指定音频源。
override fun onFirstLocalAudioFrame(elapsed: Int) {
callback(RtcEngineEvents.FirstLocalAudioFrame, elapsed)
}
override fun onFirstLocalVideoFrame(width: Int, height: Int, elapsed: Int) {
callback(RtcEngineEvents.FirstLocalVideoFrame, width, height, elapsed)
}
- 将音频帧推送给 SDK。
("", ReplaceWith("onRemoteAudioStateChanged"))
override fun onFirstRemoteAudioFrame(uid: String, elapsed: Int) {
callback(RtcEngineEvents.FirstRemoteAudioFrame, uid, elapsed)
}
开发注意事项
自定义音频采集和播放场景中,需要开发者具有采集或渲染音频数据的能力:
- 自定义音频采集场景中,你需要自行管理音频数据的采集和处理。
- 自定义音频渲染场景中,你需要自行管理音频数据的处理和播放。