pullExternalAudioFrame method

Future<int?> pullExternalAudioFrame(
  1. AudioFrame audioFrame
)

@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}');
  }
}