功能介绍
实时音视频传输过程中,RTC SDK 通常会启动默认的音视频模块进行采集和渲染。在以下场景中,你可能会发现默认的音视频模块无法满足开发需求:
- 使用非麦克风采集的音频源
- 需要对输入音频源做前处理(美声/变音)
- 音频采集设备被系统占用(已有音频采集源)
- 需要通过特定的采集系统中获取数据(录屏数据)
自定义音频采集
参考如下步骤,在你的项目中实现自定义音频采集功能:
joinChannel
前,通过调用setExternalAudioSource
指定外部音频采集设备。- 指定外部采集设备后,开发者自行管理音频数据采集和处理。
- 完成音频数据处理后,再通过
pushExternalAudioFrame
发送给 SDK 进行后续操作。
调用 setExternalAudioSource 方法且第一个参数设为 true 时,将终端麦克风采集。设置为 false 时将继续麦克风采集。
API 时序图
参考下图时序在你的项目中实现自定义音频采集。
示例代码
参考下文代码在你的项目中实现自定义音频采集。
// 首先开启外部音频源模式
rtcEngine.setExternalAudioSource(
true, // 开启外部音频源
44100, // 采样率,可以有8k,16k,32k,44.1k和48kHz等模式
1 // 外部音源的通道数,最多2个
);
// 持续的输入音频数据
rtcEngine.pushExternalAudioFrame(
data, // byte[] 类型的音频数据
timestamp // 时间戳
);
//
rtcEngine.setExternalAudioSource(
false, // 关闭外部音频源
44100, // 采样率,可以有8k,16k,32k,44.1k和48kHz等模式
1 // 外部音源的通道数,最多2个
);
API 参考
自定义音频渲染
参考如下步骤,在你的项目中实现自定义音频播放功能:
joinChannel
前,通过调用setExternalAudioSink
开启并设置外部音频渲染。- 成功加入频道后,调用
pullPlaybackAudioFrame
拉取远端发送的音频数据。 - 开发者自行渲染并播放拉取到的音频数据。
API 时序图
参考下图时序在你的项目中实现自定义音频渲染。
从 SDK 拉取远端音频数据并进行播放。
开发注意事项
自定义音频采集和播放场景中,需要开发者具有采集或渲染音频数据的能力:
- 自定义音频采集场景中,你需要自行管理音频数据的采集和处理。
- 自定义音频渲染场景中,你需要自行管理音频数据的处理和播放。