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