KSYAUAudioCapture Class Reference
Inherits from | NSObject |
---|---|
Declared in | KSYAUAudioCapture.h |
Overview
音频采集模块
- 基于 AudioUnit 实现的低延时音频采集模块
- 支持对采集的语音添加混响音效 (目前提供了4种类型的混响场景)
- 支持将采集的声音低延时播放,帮助主播选择音效 (又称"耳返")
- 支持对采集的音频进行降噪处理
- 采集的声音通过回调函数提供出来
- 当启用噪声抑制功能时,输出音频数据的采样率为16K(重采样得到,与采集的采样率无关)
– initWithSampleRate:
指定采集音频的采样率
- (id)initWithSampleRate:(double)sampleRate
Parameters
sampleRate |
指定的采样率 , 默认为44100Hz |
---|
Return Value
采集设备实例
Discussion
Warning: 请尽量使用默认的44100, 使用其他的采样率可能导致混响和变声等功能异常
Declared In
KSYAUAudioCapture.h
– startCapture
启动音频采集, 占据麦克风资源
- (BOOL)startCapture
Return Value
是否启动采集成功
Declared In
KSYAUAudioCapture.h
– pauseWithMuteData
暂停音频采集(仍然占用麦克风资源), 回调静音音频数据
- (BOOL)pauseWithMuteData
Declared In
KSYAUAudioCapture.h
bPlayCapturedAudio
是否播放采集的声音 (又称"耳返")
@property (nonatomic, assign) BOOL bPlayCapturedAudio
Discussion
Warning: 如果在没有插入耳机的情况下启动, 容易出现很刺耳的声音
Declared In
KSYAUAudioCapture.h
enableVoiceProcess
是否使用带回声消除的采集模块(默认为NO)
@property (nonatomic, assign) BOOL enableVoiceProcess
Discussion
请在连麦开始时在设置此属性为YES, 连麦结束记得设置为NO
此属性为YES时, 启动采集一定会打断其他音乐播放
Declared In
KSYAUAudioCapture.h
noiseSuppressionLevel
噪声抑制处理的等级(默认为KSYAudioNoiseSuppress_OFF)
@property (nonatomic, assign) KSYAudioNoiseSuppress noiseSuppressionLevel
Discussion
当启用噪声抑制处理后, 内部会进行输出音频数据的
Declared In
KSYAUAudioCapture.h
bForceAudioSessionCatogary
是否强制设置AVAudioSession的类别为PlayAndRecord(默认为YES)
@property (nonatomic, assign) BOOL bForceAudioSessionCatogary
Discussion
此属性为YES时, 每次启动采集会将类别强制设置为AVAudioSessionCategoryPlayAndRecord
为了避免别APP中的其他SDK将AVAudioSession的类别修改为无法录音,导致无法采集到声音
Declared In
KSYAUAudioCapture.h
micVolume
设置mic采集的声音音量
@property (nonatomic, assign) Float32 micVolume
Discussion
调整范围 0.0~1.0
Declared In
KSYAUAudioCapture.h
outputPts
最近一次输出的音频包的时间戳
@property (nonatomic, readonly) CMTime outputPts
Declared In
KSYAUAudioCapture.h
reverbType
混响类型
@property (nonatomic, assign) int reverbType
Discussion
目前提供了4种类型的混响场景, type和场景的对应关系如下
- 0 关闭
- 1 录音棚
- 2 ktv
- 3 小舞台
- 4 演唱会
Declared In
KSYAUAudioCapture.h
effectType
音效类型
@property (nonatomic, assign) KSYAudioEffectType effectType
Discussion
音效类型仅在enableVoiceProcess=NO时有效
Declared In
KSYAUAudioCapture.h
audioProcessingCallback
采集数据输出回调函数
@property (nonatomic, copy) void ( ^ ) ( CMSampleBufferRef sampleBuffer ) audioProcessingCallback
Discussion
sampleBuffer 为采集到的音频数据
与pcmProcessingCallback两者只能二选一, 设置 audioProcessingCallback 会清空pcmProcessingCallback
Declared In
KSYAUAudioCapture.h
pcmProcessingCallback
采集数据输出回调函数
@property (nonatomic, copy) void ( ^ ) ( uint8_t **pData , int len , const AudioStreamBasicDescription *fmt , CMTime timeInfo ) pcmProcessingCallback
Discussion
pData 和 len 为采集数据和长度 (目前只支持单声道, 只有pData[0]为有效数据指针 )
与audioProcessingCallback两者只能二选一, 设置 pcmProcessingCallback 会清空audioProcessingCallback
Declared In
KSYAUAudioCapture.h
customPlayCallback
用户可以自定义播放的内容,直接把数据填入ioData
@property (nonatomic, copy) void ( ^ ) ( AudioBufferList *ioData , UInt32 inumber ) customPlayCallback
Discussion
ioData 目前只支持int16 的单声道数据
Declared In
KSYAUAudioCapture.h
+ isHeadsetPluggedIn
是否有耳机麦克风可用
+ (BOOL)isHeadsetPluggedIn
Return Value
是/否有耳机麦克风
Declared In
KSYAUAudioCapture.h
isRunning
设备是否正在采集音频数据
@property (nonatomic, readonly) BOOL isRunning
Declared In
KSYAUAudioCapture.h
effectTypeFlag
变调组合类型
@property (nonatomic, assign) int effectTypeFlag
Discussion
目前提供了8种类型的变调场景, flag和变调组合类型的对应关系如下 - 0 无组合 - 1 reverb - 2 delay - 3 reverb+delay - 4 pitchShift - 5 reverb+pitchShift - 6 delay+pitchShift - 7 reverb+delay+pitchShift
Warning: 在设置effectTypeFlag时,请先将effectType设置成KSYAudioEffectType_COUSTOM模式,否则effectTypeFlag设置无法生效
Declared In
KSYAUAudioCapture.h
– setReverbParamID:withInValue:
自定义混响参数接口
- (void)setReverbParamID:(AudioUnitParameterID)inID withInValue:(AudioUnitParameterValue)inValue
Parameters
inID |
混响参数(0~6), 对应关系如下 - 0 kReverb2Param_DryWetMix - 1 kReverb2Param_Gain - 2 kReverb2Param_MinDelayTime - 3 kReverb2Param_MaxDelayTime - 4 kReverb2Param_DecayTimeAt0Hz - 5 kReverb2Param_DecayTimeAtNyquist - 6 kReverb2Param_RandomizeReflections * |
---|---|
inValue |
混响参数对应的值 |
Declared In
KSYAUAudioCapture.h
– setPitchParamID:withInValue:
自定义pitchShift参数接口
- (void)setPitchParamID:(AudioUnitParameterID)inID withInValue:(AudioUnitParameterValue)inValue
Parameters
inID |
pitchShift参数,对应关系如下 - 0 kNewTimePitchParam_Rate - 1 kNewTimePitchParam_Pitch (SDK中变调主要是调这个参数) - 4 kNewTimePitchParam_Overlap - 6 kNewTimePitchParam_EnablePeakLocking * |
---|---|
inValue |
pitchShift参数对应的值 |
Declared In
KSYAUAudioCapture.h
– setDelayParamID:withInValue:
自定义delay参数接口
- (void)setDelayParamID:(AudioUnitParameterID)inID withInValue:(AudioUnitParameterValue)inValue
Parameters
inID |
delay参数(0~3),对应关系如下 - 0 kDelayParam_WetDryMix - 1 kDelayParam_DelayTime - 2 kDelayParam_Feedback - 3 kDelayParam_LopassCutoff * |
---|---|
inValue |
delay参数对应的值 |
Declared In
KSYAUAudioCapture.h