Agora 默认的音频模块可以满足在 app 中使用基本音频功能的需求。Agora SDK 支持使用自定义的音频源为你的 app 添加特殊的音频功能。
实时音频传输过程中,Agora SDK 通常会开启默认的音频模块。在以下场景中,你可能会发现默认的音频模块无法满足开发需求。例如:
使用自定义音频源管理音频帧的采集和处理时,需要使用 Agora SDK 外部方法。
参考以下调用时序图,在你的 app 中实现自定义音频采集:
下图展示在自定义音频采集时,音频数据的传输过程:
pushExternalAudioFrameSampleBuffer
或 pushExternalAudioFrameNSData
,将采集到的音频帧发送给 SDK。在进行操作之前,请确保你已经在项目中实现了基本的实时音视频功能。详见快速开始:
参考如下步骤,在你的项目中实现自定义音频采集功能:
加入频道前,调用 setExternalAudioSource
指定音频源。
agoraKit.setExternalAudioSource(true, sampleRate: Int(sampleRate), channels: Int(channel), sourceNumber: 1, localPlayback: true, publish: true)
使用 SDK 外部方法自行实现音频的采集和处理。
调用 pushExternalAudioFrameSampleBuffer
或 pushExternalAudioFrameNSData
,将音频帧发送给 SDK,留作备用。
extension CustomPcmAudioSourceMain: AgoraPcmSourcePushDelegate {
func onAudioFrame(data: Data) {
agoraKit.pushExternalAudioFrameNSData(data, sourceId: 0, timestamp: 0)
}
}
本节介绍文中使用方法的更多信息以及相关页面的链接。
Agora 在 GitHub 上提供如下开源的示例项目。 你可以在 GitHub 上参考源代码或进行下载体验: