簡體   English   中英

iOS麥克風捕獲LPCM在8 kHz的采樣率下不起作用

[英]iOS Microphone capture LPCM not working for a sample rate of 8 kHz

我正在使用AudioComponentInstance audioUnit以各種采樣率(可從應用程序配置)在iOS,Liniar PCM上錄制麥克風。 奇怪的是,它對於11025、22050和44100正常工作,但對於8000則不工作。它不提供任何錯誤或其他信息,我只是在回調中沒有收到任何信息。 另外,還使用9600進行了測試,但無法正常工作。

有人知道原因嗎? 我開始與

status = AudioUnitInitialize(audioUnit);
status = AudioOutputUnitStart(audioUnit);

如果需要,我可以提供更多(全部)代碼,但是我認為這與代碼無關。

UPDATE

經過更多測試后,我發現在錄音回調中使用的緩沖區大小是一個問題。 在回調中,我打電話

    status = AudioUnitRender([instance audioUnit],
                             ioActionFlags,
                             inTimeStamp,
                             inBusNumber,
                             inNumberFrames,
                             entry->bufferList);

看來inNumberFrames是186或185,我創建了一個帶128的緩沖區。但是現在它仍然失敗,狀態5為5,有4次失敗。 我將緩沖區大小設置為256、512、186,但是行為是相同的。 結果是由於幀丟失,記錄失真。

好吧,我自己找出答案。 由於某些模糊的原因,回調報告的186幀已經准備好了太多。 在對AudioUnitRender()的調用中將值替換為185后,它就像一個符咒一樣工作。 似乎有一個錯誤,有些東西CoreAudio報告說准備好了額外的幀。

對於更高的頻率,這個問題不存在,因為幀數始終是恆定的,並且冪為2(256、512、1024)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM