自定义音频采集和渲染
createCustomAudioTrack
创建一个自定义音频采集轨道。
virtual rtc::track_id_t createCustomAudioTrack(rtc::AUDIO_TRACK_TYPE trackType, const rtc::AudioTrackConfig& config) = 0;
v4.2.0
如需在频道中发布多路自定义采集音频,可参考以下步骤:
-
调用该方法创建音频轨道并获得音频轨道 ID。
-
在每个频道的
ChannelMediaOptions
中,将publishCustomAudioTrackId
参数设置为你想要发布的音频轨道 ID,并将publishCustomAudioTrack
设置为true
。 -
调用
pushAudioFrame
将trackId
指定为步骤 2 中指定的音频轨道 ID,即可实现在多个频道中发布对应的自定义音频源。
参数
参数名 | 描述 |
---|---|
trackType | 自定义音频轨道类型。详见 |
config | 自定义音频轨道配置。详见 |
返回值
-
方法调用成功,返回音频轨道 ID 作为该音频轨道的唯一标识。
-
方法调用失败,返回负值。
destroyCustomAudioTrack
销毁指定的音频轨道。
virtual int destroyCustomAudioTrack(rtc::track_id_t trackId) = 0;
v4.2.0
参数
参数名 | 描述 |
---|---|
trackId | 调用 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setExternalAudioSource
设置外部音频采集参数。
virtual int setExternalAudioSource(bool enabled,
int sampleRate,
int channels,
bool localPlayback = false,
bool publish = true) = 0;
该方法已废弃,请改用 createCustomAudioTrack
。
注意: 请在加入频道前调用该方法。
参数
参数名 | 描述 |
---|---|
enabled | 是否开启使用外部音频源的功能:
|
sampleRate | 外部音频源的采样率 (Hz),可设置为 |
channels | 外部音频源的声道数,可设置为 |
localPlayback | 是否在本地播放外部音频源:
|
publish | 是否将音频发布到远端:
|
返回值
-
0:方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
pullAudioFrame
拉取远端音频数据。
virtual int pullAudioFrame(IAudioFrameObserver::AudioFrame* frame) = 0;
使用该方法前,你需要调用 setExternalAudioSink
通知 app 开启并设置外部渲染。
调用该方法后,app 会采取主动拉取的方式获取远端已解码和混音后的音频数据,用于音频播放。
注意:
-
该方法仅支持拉取自采集的数据。如果你需要拉取 SDK 采集的数据,请不要调用该方法。
-
该方法需要在加入频道后调用。
-
开启外部音频渲染后,app 将无法从
onPlaybackAudioFrame
回调中获得数据。 -
该方法和
onPlaybackAudioFrame
回调相比,区别在于:-
SDK 通过
onPlaybackAudioFrame
回调将音频数据传输给 app。如果 app 处理延时,可能会导致音频播放抖动。 -
调用该方法后 app 会主动拉取音频数据。通过设置音频数据,SDK 可以调整缓存,帮助 app 处理延时,从而有效避免音频播放抖动。
-
参数
参数名 | 描述 |
---|---|
frame | 指向 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
pushAudioFrame
推送外部音频帧。
virtual int pushAudioFrame(IAudioFrameObserver::AudioFrame* frame, rtc::track_id_t trackId = 0) = 0;
参数
参数名 | 描述 |
---|---|
frame | 外部音频帧。详见 |
trackId | 音频轨道 ID。如果你要发布自定义的外部音频源,则将该参数设置为你想要发布的自定义音频轨道 ID。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
setExternalAudioSink
设置外部音频渲染。
virtual int setExternalAudioSink(bool enabled, int sampleRate, int channels) = 0;
该方法适用于需要自行渲染音频的场景。开启外部音频渲染后,你可以调用 pullAudioFrame
拉取远端音频数据。App 可以对拉取到的原始音频数据进行处理后再渲染,获取想要的音频效果。
参数
参数名 | 描述 |
---|---|
enabled | 设置是否开启外部音频渲染:
|
sampleRate | 外部音频渲染的采样率 (Hz),可设置为 16000,32000,44100 或 48000。 |
channels | 外部音频渲染的声道数:
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。