KSYAudioMixer Class Reference
Inherits from | NSObject |
---|---|
Declared in | KSYAudioMixer.h |
Overview
多路pcm混音
- 用trackId来表示某一路音频,从0开始编号
- 要求一定要有一路麦克风的音频,其他音频都叠加到麦克风上
- 将输入的音频pcm数据存入buffer,每一路音频的buffer独立
- 每次麦克风的音频输入,都会触发从所有buffer中取数据,混合,发送的动作
- 每一路音频可以单独配置音量
- 输出格式固定为 44.1KHz, S16 (声道数可设定)
– 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