更新时间:2023-10-26 GMT+08:00
分享

原始音频数据(音频前后处理)

功能描述

音视频传输过程中,可以对采集到的音视频数据进行前处理和后处理,获取想要的播放效果。

对于有自行处理音视频数据需求的场景,HWRtcEngine SDK提供原始数据功能,您可以在将数据发送给编码器前进行前处理,对捕捉到的音频信号或视频帧进行修改,也可以在将数据发送给解码器后进行后处理,对接收到的音频信号或视频帧进行修改。

原始音频数据可以进行音频前处理,然后发送给远端。也可以进行音频后处理。

注意事项

当前只支持PCM数据格式处理。

接口调用流程

注册音频前后处理

获取HWRtcEngine的HWRtcMediaEngine对象。

[HWRtcEngine sharedEngine].mediaEngine

注册音频前后处理

[[HWRtcEngine sharedEngine].mediaEngine setAudioFrameObserver:self];

每次入会都需要重新注册。取消注册,则传nil。

self(当前类)要签署HWRtcMediaEngineAudioDelegate。

实现如下回调:

requireRecordAudioFrame:
requirePlaybackAudioFrame:
requireMixedAudioFrame:

通过回调的返回值来决定对应音频帧的处理是否生效。

实现

onAudioFramePlayback:
onAudioFrameMixed:
onAudioFrameRecord:

回调,从回调中获取音频帧并进行处理。

注意:所有回调的返回值为false,说明对音频帧的处理无效。

/// 音频前后处理
- (BOOL)onAudioFramePlayback:(HWRtcAudioFrame * _Nonnull)audioFrame
 {
    // 本地音频数据
    return YES;
}
 
- (BOOL)onAudioFrameMixed:(HWRtcAudioFrame * _Nonnull)audioFrame
 {
// 混音数据
    return YES;
}
 
- (BOOL)onAudioFrameRecord:(HWRtcAudioFrame * _Nonnull)audioFrame
 {
    // 远端音频数据
    return YES;
}
 
- (BOOL)requireRecordAudioFrame { 
    // 返回值决定是否远端音频数据生效
    return YES;
}
 
- (BOOL)requirePlaybackAudioFrame { 
// 返回值决定是否本地音频数据生效
    return YES;
}

-(BOOL)requireMixedAudioFrame {
    // 返回值决定是否混音数据生效
    return YES;
}

加入房间

参考接口调用流程中加入房间的时序图步骤加入房间。

相关文档