pullExternalAudioFrame method
@detail api
@author gongzhengduo
@brief 拉取下行音频数据用于自定义音频渲染。
调用该方法后,SDK 会主动拉取待播放的音频数据,包括远端已解码和混音后的音频数据,用于外部播放。
@param audioFrame 音频数据帧,详见 AudioFrame{@link #AudioFrame}
@return 方法调用结果
- 0: 设置成功
- < 0: 设置失败
@note
- 拉取外部音频数据前,必须先调用 setAudioRenderType{@link #RTCEngine#setAudioRenderType} 启用自定义音频渲染。
- 由于 RTC SDK 的帧长为 10 毫秒,你应当每隔 10 毫秒拉取一次音频数据。确保音频采样点数(sample)x 拉取频率等于 audioFrame 的采样率 (sampleRate)。如设置采样率为 48000 时,每 10 毫秒调用本接口拉取数据,每次应拉取 480 个采样点。
- 音频采样格式为 S16。音频缓冲区内的数据格式为 PCM 数据,其容量大小为 audioFrame.samples × audioFrame.channel × 2。
Implementation
Future<int?> pullExternalAudioFrame(AudioFrame audioFrame) async {
$a() => ($instance as $p_a.RTCEngine)
.pullExternalAudioFrame(unpackObject<$p_a.AudioFrame>(audioFrame));
$i() => ($instance as $p_i.ByteRTCEngine).pullExternalAudioFrame(
unpackObject<$p_i.ByteRTCAudioFrame>(audioFrame));
if (Platform.isAndroid) {
return $a();
} else if (Platform.isIOS) {
return $i();
} else {
throw UnsupportedError(
'Not Support Platform ${Platform.operatingSystem}');
}
}