2017-04-10 104 views
0

我正在使用一個應用程序來記錄音頻並將其傳輸到另一個用戶。這基本上是一個VoIP電話。我遇到的問題是,我要傳送給對方的音頻延遲了大約0.5秒。這很明顯,當你們同時談話時有點煩人。Swift - 使用AVFoundation錄製音頻時如何消除延遲

我想知道這在AVFoundation的AVAudioEngine中是否很常見,或者如果可能的話,這與我設置它的方式有關。

如果這不是AVAudioEngine的已知問題,那麼我可以包含源代碼,否則您能否建議用最少的延遲記錄音頻的最佳路徑?

我更喜歡一些相當高級的東西,並且與swift 3/3.1兼容。但是,如果沒有滿足這些需求的解決方案,那麼推薦您認爲最適合的工具。

謝謝!

回答

0

確保您調用「AVAudioEngine.inputNode.installTap」函數,並且支持的最小bufferSize爲100 ms或(sampleRate * 0.1)個採樣。

+0

謝謝您的輸入。所以我嘗試設置緩衝區大小爲100,但是,它似乎默認爲4410.這是我的代碼: localInput?.installTap(onBus:0,bufferSize:100,format:localInputFormat){(buffer,when) - >無效 但是,當我打印出buffer.frameCapacity和buffer.frameLength時,它們都是4410 ... – Kember

+0

bufferSize參數 - 樣本(!)中音頻緩衝區的首選大小。如果sampleRate是44100,則支持的最小bufferSize將是4410.將「100」替換爲「4410」。 –

+0

默認情況下,我的bufferSize爲4410.所以不幸的是,這不起作用。 – Kember