是否有可能改变一个正在运行的AudioSession / AudioUnit中间/设置采样率不停止/重新启动电流AudioSession / AudioUnit(就像音频路径)?
我有一个活跃的音频会话,其采样速率为44.1千赫
AudioStreamBasicDescription.mSampleRate = 44100
我想改变采样率8KHz的不uninitializing [AudioUnitUninitialize(audioUnit)]或停止[AudioOutputUnitStop(audioUnit)]或停用音频单元/会话。
这是我的音频单元设置。
audioComponentDescription.componentType = kAudioUnitType_Output;
audioComponentDescription.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
audioComponentDescription.componentFlags = 0;
audioComponentDescription.componentFlagsMask = 0;
audioComponentDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
audioStreamBasicDescription.mSampleRate = 44100;
audioStreamBasicDescription.mFormatID = kAudioFormatLinearPCM;
audioStreamBasicDescription.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
audioStreamBasicDescription.mFramesPerPacket = 1;
audioStreamBasicDescription.mChannelsPerFrame = 1;
audioStreamBasicDescription.mBitsPerChannel = 16;
audioStreamBasicDescription.mBytesPerPacket = 2;
audioStreamBasicDescription.mBytesPerFrame = 2;
任何帮助,高度赞赏。
没有,因为每个采样率要求在从音频单元缓冲区和采样率转换器之前的速率涉及冲洗样品一些启动时间。
最好的选择,如果你需要处理的另一个采样率是在自己的应用程序中的软件重新取样。
是的,你可以用kAudioUnitSubType_SpatialMixer音频单元动态地做到这一点。在伪代码:
AudioUnitSetParameter(mixerUnit, k3DMixerParam_PlaybackRate, kAudioUnitScope_Input, 0, sampleRateRatio(from 0.0 to 2.0), 0);