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

– setMixVolume:rightVolume:of:

设置立体声混音音量(默认音量为1.0),如果设置的单声道输出,则使用leftVolume进行处理

- (BOOL)setMixVolume:(float)leftVolume rightVolume:(float)rightVolume of:(int)trackId

Parameters

leftVolume

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

rightVolume

右声道音量比例(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

– getMixVolume:rightVolume:of:

查询track的音量,

- (void)getMixVolume:(float *)leftVolume rightVolume:(float *)rightVolume of:(int)trackId

Parameters

leftVolume

左声道音量比例

rightVolume

右音量比例

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

– getNumSamplesInBuffer:

查询track中缓存数据的samplebuffer数

- (int)getNumSamplesInBuffer:(int)trackId

Parameters

trackId

开关对应track

Return Value

<0, 表示查询失败 =0,表示无残余的数据

0, 表示buffer中sample数 *

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

原始数据指针数组,单通道仅pData[0]有效 当输入为多通道且非交织时, pData[i]分别表示各个通道的数据

len

数据的长度,单位为sample (bytes / sizeof(sample))

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

与pcmProcessingCallback两者只能二选一, 设置 audioProcessingCallback 会清空 pcmProcessingCallback

Declared In

KSYAudioMixer.h

  pcmProcessingCallback

音频处理回调接口

@property (nonatomic, copy) void ( ^ ) ( uint8_t **pData , int nbSample , CMTime pts ) pcmProcessingCallback

Discussion

pData 为数据指针 (双通道时, 数据为交织格式), 仅pData[0] 有效

nbSample 为数据长度, 单位为sample (bytes / sizeof(sample)/channels)

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

与audioProcessingCallback两者只能二选一, 设置 pcmProcessingCallback 会清空audioProcessingCallback

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

  frameSize

每一次输出数据(Frame)的sample数, 默认为1024

@property (nonatomic, assign) int frameSize

Declared In

KSYAudioMixer.h

  sampleRate

输出音频的采样率, 默认为44100

@property (nonatomic, assign) int sampleRate

Declared In

KSYAudioMixer.h

  outFmtDes

混音后输出PCM的格式

@property (nonatomic, readonly) AudioStreamBasicDescription *outFmtDes

Declared In

KSYAudioMixer.h