跳到主要内容

流处理

本地音频流处理

获取最终编码发送的音频数据

此回调返回的数据是最终编码发送的音频数据。该数据经过 SDK 默认的 3A(增益、回声、降噪)处理。如果还使用了混音、美声特效、自定义音频等功能,返回的数据中将同时包含以上效果的声音。

接口原型

Objective C
@property (nonatomic, copy, nullable) RCRTCAudioDataCallback willSendAudioBufferCallback;

属性说明

属性类型说明
willSendAudioBufferCallbackRCRTCAudioDataCallback将要发送的音频 PCM 数据的回调,用户可以直接处理该音频数据

回调类型定义

Objective C
typedef void (^RCRTCAudioDataCallback)(UInt32 inNumberFrames,
AudioBufferList *_Nonnull ioData,
const AudioTimeStamp *_Nonnull inTimeStamp,
const AudioStreamBasicDescription asbd);

回调参数说明

参数类型说明
inNumberFramesUInt32帧个数
ioDataAudioBufferList *音频 PCM 数据
inTimeStampconst AudioTimeStamp *音频时间戳
asbdconst AudioStreamBasicDescription音频格式描述

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 设置音频数据回调
[RCRTCEngine sharedInstance].defaultAudioStream.willSendAudioBufferCallback = ^(UInt32 inNumberFrames, AudioBufferList *_Nonnull ioData, const AudioTimeStamp *_Nonnull inTimeStamp, const AudioStreamBasicDescription asbd) {
// 处理最终编码发送的音频数据
// 可以在这里对音频数据进行自定义处理
// asbd 参数提供了音频格式信息(采样率、声道数、位深等)
};

获取麦克风采集的原始音频数据

提示

SDK 从 5.1.6 版本开始支持该功能。

此回调返回的数据是采集的原始音频数据,不经过 SDK 的任何处理。

接口原型

Objective C
@property (nonatomic, copy, nullable) RCRTCAudioFrameCallback recordAudioDataCallback;

属性说明

属性类型说明
recordAudioDataCallbackRCRTCAudioFrameCallback麦克风音频 PCM 数据的回调,用户可以直接处理该音频数据

回调类型定义

Objective C
typedef void (^RCRTCAudioFrameCallback)(RCRTCAudioFrame *_Nonnull frame);

回调参数说明

参数类型说明
frameRCRTCAudioFrame*音频数据

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 设置麦克风原始音频数据回调
[RCRTCEngine sharedInstance].defaultAudioStream.recordAudioDataCallback = ^(RCRTCAudioFrame * _Nonnull frame) {
// 处理麦克风采集的原始音频数据
// 可以在这里对原始音频数据进行自定义处理
};

远端音频流处理

获取订阅的所有远端用户混音后的音频数据

接收后播放前的远端音频,上报的远端音频数据是将收到的所有远端音频进行混音后的数据。

接口原型

Objective C
@property (nonatomic, copy, nullable) RCRTCAudioDataCallback receivedAudioBufferCallback;

属性说明

属性类型说明
receivedAudioBufferCallbackRCRTCAudioDataCallback远端音频 PCM 数据的回调,用户可以直接处理该音频数据

回调参数说明

参数类型说明
inNumberFramesUInt32帧个数
ioDataAudioBufferList *音频 PCM 数据
inTimeStampconst AudioTimeStamp *音频时间戳
asbdconst AudioStreamBasicDescription音频格式描述

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 设置远端音频数据回调
room.receivedAudioBufferCallback = ^(UInt32 inNumberFrames, AudioBufferList *_Nonnull ioData, const AudioTimeStamp *_Nonnull inTimeStamp, const AudioStreamBasicDescription asbd) {
// 处理所有远端用户混音后的音频数据
// 可以在这里对远端音频数据进行自定义处理
// asbd 参数提供了音频格式信息(采样率、声道数、位深等)
};

获取订阅的指定远端用户音频数据

提示

SDK 从 5.1.6 版本开始支持该功能。

接口原型

Objective C
@property (nonatomic, copy, nullable) RCRTCAudioFrameCallback audioDataCallback;

属性说明

属性类型说明
audioDataCallbackRCRTCAudioFrameCallback远端音频 PCM 数据的回调,用户可以直接处理该音频数据

回调参数说明

参数类型说明
frameRCRTCAudioFrame*音频数据

RCRTCAudioFrame 对象字段说明

字段类型说明
bytesuint8_t*音频数据
lengthint32_t音频数据长度(字节数)
channelsint32_t声道数
sampleRateint32_t采样率
bytesPerSampleint32_t位深
samplesint32_t帧数
renderTimeMsuint64_t时间戳

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 设置指定远端用户音频数据回调
audioInputStream.audioDataCallback = ^(RCRTCAudioFrame * _Nonnull frame) {
// 处理指定远端用户的音频数据
// 可以在这里对单个用户的音频数据进行自定义处理
};

API 文档