21期_AudioUnit的Scope录音输入和输出
2023-09-29 本文已影响0人
萧修
AudioUnitSetProperty用于设置音频属性,比如音频输入和输出格式,对AudioUnitPropertyID设置
AudioUnitSetProperty( AudioUnit inUnit,
AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement, 1:输入 0输出
const void * __nullable inData, 值 0:关,1开
UInt32 inDataSize)
- 每个Audio包含两个element,element0代表输出,element1代表输入。elememt是audio unit scope编程上下文,类似物理音频设备中的信号总线。
- 每个element包含输入和输出部分即(input scope和input scope)
AudioUnitScope:音频输入和输出控制 input和output,描述音频流通过音频单元的过程。
kAudioUnitScope_Input:音频输入端口,在此处都需要向element输入音频数据
kAudioUnitScope_Output:音频输出端口,此处设置将element的音频数据输出到其他地方
开启录音输入
UInt32 inputEnable = 1;
status = AudioUnitSetProperty(audioUnit,
kAudioOutputUnitProperty_EnableIO,
kAudioUnitScope_Input,
1,
&inputEnable,
sizeof(inputEnable));
设置播放的输入部分
CHECK_ERROR(AudioUnitSetProperty(ioUnitInstance, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &mDataFormat, sizeof(mDataFormat)), "设置input格式失败");
设置录音的输出 element1 ---> APP
CHECK_ERROR(AudioUnitSetProperty(ioUnitInstance, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &mDataFormat, sizeof(mDataFormat)), "设置output格式失败");
``pod