簡體   English   中英

iOS中的背景錄音

[英]background audio recording in iOS

我到處搜索有關如何在后台錄制音頻的文檔,得出的結論是,在plist文件中指定“音頻”可能有效。 但是,由於iOS 4在內存不足時會終止后台應用程序,因此當過渡到后台時,我們還必須采取一些措施來減少內存使用量。 我們如何減少內存使用量?

另外,有人知道在iOS上后台錄制音頻的可靠方法嗎?

我取消選中了Info.plist文件中的框,該框顯示“應用程序不在后台運行”,並且還添加了

<key> UIBackgroundModes </ key> < array> < string> audio</ string></ array>

Info.plist 但是,只要按下“ HOME”按鈕,錄音就會停止。

我們執行哪些回調才能知道該應用程序已進入后台? 請指教。

萬一其他人在這里尋找答案,我可以通過將UIBackgroundModes數組添加到plist並將“ audio”添加為Item 0來使我的工作正常。

我可以通過退出該應用程序來釋放所有的內存/控制器,就像退出該應用程序一樣,剩下的就是該應用程序使用的緩沖區(我分配了大約1Mb的內存,雖然這讓我有些緊張,但是似乎已經起作用了!)我想降低保真度也會有所幫助,但它似乎可以正常工作。

在我的核心音頻設置中,我不得不將緩沖區大小從1024更改為4096,或者顯式設置緩沖區大小...由於延遲是一個問題,因此我選擇了后者。

NSTimeInterval iobuffersize = (float)1024.0f/SAMPLE_RATE);
sizeofdata = sizeof(iobuffersize);
AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, &sizeofdata, &iobuffersize);

我還必須確保通過不啟用“不在后台運行”選項不會在退出時殺死應用程序,但是無論如何應默認將其關閉。

因此,我猜我在回答這個問題時會讓其他任何人都省心,因為它畢竟不需要太多設置。

但是我在藍牙設置時遇到問題,我想那是因為緩沖區大小再次更改,但無法弄清楚這一點...通過recordingCallback渲染數據時,得到-50 =無效屬性警告。 我猜這是頻率/樣本大小,但誰知道...稍后再看,但似乎背景現在可以工作了。

除了在plist文件中指定后台記錄之外,我們還可以實現applicationDidEnterBackground,它將在應用程序進入后台時告訴我們。 在這里,我們應該停止對UI的任何更新,因為這會消耗內存,例如,更新計時器和均衡器。

調用applicationWillEnterForeground會在應用程序返回到前台之前被調用,因此我們可以恢復停止的任何內容。

錄制然后在后台進行。 這也將有助於實現一個中斷偵聽器(這也將在后台運行),這樣您就不會丟失錄制內容。

暫無
暫無

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

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