2015-09-13 186 views
1

是否可以在運行的AudioSession/AudioUnit中間更改/設置採樣率,而無需停止/重新啓動當前AudioSession/AudioUnit(就像音頻路由一樣)?iOS:在音頻單元中動態更改採樣率

我有一個激活的音頻會話,其採樣速率爲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; 

任何幫助,高度讚賞。

+0

你嘗試了什麼? –

回答

2

不,因爲每個採樣率需要一些啓動時間,包括從音頻單元緩衝區和採樣率轉換器以前一個頻率清除樣本。

最好的辦法是,如果您需要處理另一個採樣率,請在您自己的應用程序的軟件中重新採樣。