KSYAudioMixer Class Reference

Inherits from NSObject
Declared in KSYAudioMixer.h

Overview

多路pcm混音

  1. 用trackId来表示某一路音频,从0开始编号
  2. 要求一定要有一路麦克风的音频,其他音频都叠加到麦克风上
  3. 将输入的音频pcm数据存入buffer,每一路音频的buffer独立
  4. 每次麦克风的音频输入,都会触发从所有buffer中取数据,混合,发送的动作
  5. 每一路音频可以单独配置音量
  6. 输出格式固定为 44.1KHz, S16 (声道数可设定)

– getMaxMixTrack

获取最大支持的混合路数 *

- (int)getMaxMixTrack

Declared In

KSYAudioMixer.h

– setMixVolume:of:

设置混音音量(默认音量为1.0)

- (BOOL)setMixVolume:(float)vol of:(int)trackId

Parameters

vol

音量比例(0.0~2.0) (<1.0 为缩小, > 1.0为放大)

trackId

设置对应track的

Return Value

NO为设置失败,如track不存在,或vol超出范围

Discussion

Warning: 设置放大的音量可能会出现爆音, 请注意 *

Declared In

KSYAudioMixer.h

– getMixVolume:

查询track的音量

- (float)getMixVolume:(int)trackId

Parameters

trackId

设置对应track的

Return Value

负数为查询失败,如track不存在 *

Declared In

KSYAudioMixer.h

– setTrack:enable:

开启/关闭一路声音

- (BOOL)setTrack:(int)trackId enable:(BOOL)onOff

Parameters

trackId

开关对应track

onOff

开关, 0号track默认开启

Return Value

NO为设置失败,比如trackID不存在 *

Declared In

KSYAudioMixer.h

– getTrackEnable:

查询track是否开启

- (BOOL)getTrackEnable:(int)trackId

Parameters

trackId

开关对应track *

Declared In

KSYAudioMixer.h

– getBufLength:

查询track中缓存数据的长度(单位为一次输出的samplebuffer数)

- (int)getBufLength:(int)trackId

Parameters

trackId

开关对应track

Return Value

<0, 表示查询失败 =0,表示残余的数据不足一次输出 >0, 表示可以buffer中的数据还可以输出n次 *

Declared In

KSYAudioMixer.h

– processAudioSampleBuffer:of:

输入音频PCM

- (BOOL)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer of:(int)trackId

Parameters

sampleBuffer

音频数据

trackId

设置对应track的

Return Value

NO为设置失败,比如trackID不存在

Declared In

KSYAudioMixer.h

– processAudioData:nbSample:withFormat:timeinfo:of:

输入音频PCM

- (BOOL)processAudioData:(uint8_t **)pData nbSample:(int)len withFormat:(const AudioStreamBasicDescription *)fmt timeinfo:(CMTime)pts of:(int)trackId

Parameters

pData

原始数据

len

数据的长度,单位为字节

fmt

原始数据的格式

pts

原始数据的时间戳

trackId

设置对应track的

Return Value

NO为设置失败,比如trackID不存在

Discussion

传入数据为NULL时,仅仅检查是否有数据输出

Declared In

KSYAudioMixer.h

  audioProcessingCallback

音频处理回调接口

@property (nonatomic, copy) void ( ^ ) ( CMSampleBufferRef sampleBuffer ) audioProcessingCallback

Discussion

sampleBuffer 混音后的音频数据

请注意本函数的执行时间,如果太长可能导致不可预知的问题

请参考 CMSampleBufferRef

Declared In

KSYAudioMixer.h

  mainTrack

主轨的trackId (默认为0)

@property (nonatomic, assign) int mainTrack

Discussion

比如micphone的track,所有track都同步到主轨的时间轴

Declared In

KSYAudioMixer.h

  bStereo

输出音频是否为双声道立体声 (默认为NO)

@property (nonatomic, assign) BOOL bStereo

Discussion

如果输入数据都不是双声道则输出数据左右耳内容一样

Declared In

KSYAudioMixer.h

  outFmtDes

混音后输出PCM的格式

@property (nonatomic, readonly) AudioStreamBasicDescription *outFmtDes

Discussion

暂时为固定一种格式 (44.1KHz, S16)

Declared In

KSYAudioMixer.h