
# 原始音频数据（音频前后处理）
#### 功能描述
音视频传输过程中，可以对采集到的音视频数据进行前处理和后处理，获取想要的播放效果。
对于有自行处理音视频数据需求的场景，HWRtcEngine SDK提供原始数据功能，您可以在将数据发送给编码器前进行前处理，对捕捉到的音频信号或视频帧进行修改，也可以在将数据发送给解码器后进行后处理，对接收到的音频信号或视频帧进行修改。
原始音频数据可以进行音频前处理，然后发送给远端。也可以进行音频后处理。
 #### 接口调用流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001226003971.png)
#### 实现原始音频数据（音频前后处理）
1. **注册音频前后处理**
   获取mHwRtcEngine的MediaEngine对象，调用setAudioFrameObserver方法进行注册。
   传入的参数是需要实现了IHRTCAudioFrameObserver的实例对象。
   从回调中获取音频帧，并进行处理。
   ```
   @Override
   public void onAudioFramePlayback(HRTCAudioFrame hrtcAudioFrame) {
       // 需要播放的音频数据回调，从接口回调中取到音频数据以作后处理
   }
   @Override
   public void onAudioFrameMixed(HRTCAudioFrame hrtcAudioFrame) {
       // 全部音频混音数据回调，包含上下行所有通道
   }
   @Override
   public void onAudioFrameRecord(HRTCAudioFrame hrtcAudioFrame) {
       // 音频采集原始数据回调，对音频数据的修改会发送到远端
   }
   @Override
   public boolean requirePlaybackAudioFrame() {
       // 是否开启音频后处理
       return false;
   }
   @Override
   public boolean requireRecordAudioFrame() {
       // 是否开启音频前处理
       return false;
   }
   @Override
   public boolean requireMixedAudioFrame() {
       // 是否需要开启全部音频混音数据回调
       return false;
   }
   ```
   
2. **加入房间**
   参考[接口调用流程]中加入房间的时序图步骤加入房间。
   
 
#### API参考
[setAudioFrameObserver](https://support.huaweicloud.com/csdk-rtc/rtc_05_0039.html#section1)
[onAudioFramePlayback](https://support.huaweicloud.com/csdk-rtc/rtc_05_0041.html#section0)
[onAudioFrameMixed](https://support.huaweicloud.com/csdk-rtc/rtc_05_0041.html#section1)
[onAudioFrameRecord](https://support.huaweicloud.com/csdk-rtc/rtc_05_0041.html#section2)
[requireRecordAudioFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0041.html#section7)
[requirePlaybackAudioFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0041.html#section8)
[requireMixedAudioFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0041.html#section9)
