2013-08-16 85 views
0

我有一個使用RemoteIO音頻單元創建聲音的應用程序。但是,由於延遲和計算問題,該系統的採樣率不能高於8 kHz。我使用以下行來設置採樣率。在iOS中強制實施音頻採樣率

AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareSampleRate,propSize,&hwSampleRate) 

但是,在某些運行中,我得到44.1 kHz的採樣率。在這種情況下,我的應用似乎無法正常工作,因爲它無法以該採樣率處理計算。強制採樣率爲8 kHz的最佳選擇是什麼?退出並再次打開該應用程序可以工作,但會造成不良UX。

+1

音頻是iOS中的共享資源。沒有一個應用程序可以強制進行音頻配置,因爲這可能與共享音頻硬件的其他OS服務或應用程序不兼容。相反,嘗試使用採樣率轉換器,音頻單元或音頻處理的一部分。 – hotpaw2

回答

3

正如hotpaw2所述,音頻是iOS上的共享資源。您無法獲得對硬件的獨佔訪問權限。調用AudioSessionSetProperty/kAudioSessionProperty_PreferredHardwareSampleRate會設置首選的硬件採樣率。正如您所注意到的,您可能會以不同的速率運行硬件,但這並不意味着您的應用無法以8kHz運行。

如果您正確配置RemoteIO格式,那麼RemoteIO將爲您執行輸出採樣率轉換。硬件將運行在44.1kHz,但您的應用程序將以8kHz輸出。

你可以閱讀各種方式​​通過搜索該文檔中的「採樣率」來實現這一目標:(如文檔討論)

http://developer.apple.com/library/ios/documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/ConstructingAudioUnitApps/ConstructingAudioUnitApps.html

一個辦法是建立一個調音臺正確的輸出採樣率,然後將您的渲染回調附加到混音器的輸入。

+0

是否有關於獲取混音器單元,音頻回調和RemoteIO一起工作的教程?一直在嘗試過去的2天。 Apple的MixerHost也會在運行時崩潰。試圖從那裏複製代碼,到達它看起來像事物連接的地方,但是在記錄控制檯時,顯然回調被有效地以44100的速率調用。 成員節點: \t節點1:' auou」 'rioc' '申請',實例0x1f53e150ö \t節點2: 'aumx' 'mcmx' '申請',實例0x20031320ö 輸入回調: \t {0xa430d,0x1f53549c} =>節點1個總線0 [2 CH ,16000Hz] – e7mac