
# 音频自采集和音频自渲染
#### 功能介绍
实时音频传输过程中，HWRtcEngine SDK 通常会启动默认的音频模块进行采集和渲染。在以下场景中，您可能会发现默认的音频模块无法满足开发需求：
- app中已有自己的音频模块。
- 需要使用自定义的采集或播放处理。
- 某些音频采集设备被系统独占。
 #### 接口调用流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001181895060.png)
#### 实现过程
1. **加入房间前调用主引擎的setExternalAudioCapture (true)**
   加入房间前调用此接口打开自采集功能。
   ```
   m_pRtcEngine->setExternalAudioCapture(true, sampleRate, channels);
   ```
   
2. **加入房间**
   参考[接口调用流程]中加入房间的时序图步骤加入房间。
   
3. **开启音频流发送**
   调用接口muteLocalAudio开启音频流发送。
   ```
   m_pRtcEngine-> muteLocalAudio(false);
   ```
   
4. **定时推送音频数据帧**
   加入房间成功回调后，每隔10ms定时调用pushExternalAudioFrame接口推送外部音频数据。
   音频输入数据大小：10 \* sampleRate \* channels \* 16 / 8 / 1000字节，其中的sampleRate和channels是前面调用的setExternalAudioCapture里传入的采样率和声道数参数。
   ```
   // audioData  获取的音频数据指针， size 获取的音频数据字节数
    engine->pushExternalAudioFrame(audioData, size);
   ```
   根据帧率循环调用pushExternalAudioFrame方法往SDK推送数据。
   
5. **音频自渲染**
   暂不支持音频自渲染功能。
   
 
#### API参考
[setExternalAudioCapture](https://support.huaweicloud.com/csdk-rtc/rtc_05_0105.html#section4)
[muteLocalAudio](https://support.huaweicloud.com/csdk-rtc/rtc_05_0100.html#section4)
[pushExternalAudioFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0105.html#section5)
