我正在使用AudioComponentInstance audioUnit在iOS,Liniar PCM上錄製麥克風,並使用各種採樣率(可從app進行配置)。怪異的部分是,它對11025,22050和44100工作正常,但對8000不起作用。它沒有提供任何錯誤或者什麼,我只是在回調中沒有收到任何東西。 此外,測試與9600,它不工作。iOS麥克風捕捉LPCM無法工作在8 kHz的採樣率下
有人知道這個的原因嗎? 我
status = AudioUnitInitialize(audioUnit);
status = AudioOutputUnitStart(audioUnit);
如果需要,我可以提供更多(全部)的代碼啓動會話,但我不認爲這是相關的代碼。
UPDATE
一些更多的測試後,我發現我在錄音回調使用緩衝區的大小是一個問題。在回調我叫
status = AudioUnitRender([instance audioUnit],
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
entry->bufferList);
看來inNumberFrames是186還是185,我創建了一個緩衝帶128.但是,現在它還是老樣子,狀態-50失敗的4超過了5倍。我將緩衝區大小設置爲256,512,186,但行爲相同。結果是錄製失真,因爲幀丟失了。