簡體   English   中英

iOS:音頻單位:設置任意采樣率

[英]iOS: Audio Units: setting arbitrary sample rate

我可以設置我想要的任何采樣率嗎? 有什么限制?

硬件采樣率如何? 一旦確定,單位之間傳遞的內部采樣率有什么限制?

我猜測實際的硬件速率可能必須是44.1KHz的一些位移,並且任何內部采樣率必須是該原始值的向下位移(例如22.1KHz,11.05KHz)。 這很接近嗎?

據我所理解,
1.我從音頻會話中設置硬件采樣率。
2. 系統會將采樣率設置盡可能接近我指定的采樣率。
3.然后我查詢音頻會話以查找我設置的相同屬性,這將為我提供它正在使用的實際采樣率

在音頻單元的級別,特別是RemoteIO單元,文檔說明單元連接到硬件的兩個點(即麥克風(輸入)總線的輸入范圍和揚聲器(輸出)總線的輸出范圍) ,可以檢索采樣率但 設置

但是,我嘗試在構建遠程I / O單元時訪問此值,並返回零。 我想也許我需要在我從其連接中獲取有意義的數據之前啟動該單元(啟動它的行為可能會創建連接)。 所以這里的解決方案似乎是從音頻會話中獲取采樣率並使用它,如上所述。

需要標簽:音頻單元

因為你提到AudioSessions,我假設你在iOS上。 所以你想要:

  1. 檢查音頻輸入硬件。 AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)

  2. 將音頻會話設置為“播放和錄制”模式。 AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...)kAudioSessionCategory_PlayAndRecord

  3. 激活會話。 AudioSessionSetActive()

  4. 獲得首選采樣率。 AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)

然后,您可以使用正確的采樣率設置音頻處理鏈。

至於播放音頻,您可以使用任何采樣率,API應將其轉換為硬件的輸出采樣率。 顯然,如果你使用非常高的采樣率,它會消耗大量的內存和CPU時間。

暫無
暫無

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

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