2011-12-28 87 views
3

我實現了一個類似於iOS Developer's Library上的AUGraph的AUGraph。但是,在我的應用程序中,我需要能夠以不同的採樣率(可能是兩種不同的採樣率)播放聲音。更改iOS上AUGraph的採樣率

我一直在環顧蘋果的文檔,並沒有找到一種方法來設置運行時的採樣率。我一直在考慮三種可能的解決方法:

  1. 每次我需要更改採樣率時,重新初始化AUGraph;
  2. 爲每個不同的採樣率初始化一個不同的AUGraph;
  3. 在播放之前轉換每個聲音的採樣率;

這些方法在處理器上看起來都很笨重。

在運行時更改AUGraph採樣率的最佳方法是什麼?

+0

經過一些測試後,我發現重新初始化AUGraph並不像看起來那麼糟糕。我現在要跟隨#1,未來可能會變成#2。感謝大家! – rahzark 2012-01-02 15:28:38

回答

1

典型地#1用於連續音頻流場景。

你的程序可能需要使用您列出了另一種方法,特別需要或利益:

  • #2:你需要處理在重新初始化是不是一個問題。
  • #3:您需要在不同輸入採樣率的情況下一起混合並處理兩個流,特別是如果您發現自己多次使用SRCing信號。

但是,如果您只需要使用SRC進行播放並且不需要考慮最低延遲,則可以嘗試使用AudioQueue。

0

我很確定它不能在運行時完成。 #3解決方案#2是你最好的選擇。對於採樣率轉換,libsndfile可能可以適應您的需求。

+0

重新取樣可以在運行時完成。 iOS 5可能會有一個新的音頻單元,可以爲您重新採樣。 – hotpaw2 2011-12-28 19:11:03

0

如果您不希望延遲導致音頻圖形撕裂並重建,則可能需要重新採樣聲音數據(除了一個採樣率外)。

您可以在開始播放聲音數據之前重新採樣聲音數據,也可以將實時重新採樣器作爲音頻圖的一部分運行。許多iOS音樂應用程序將後者作爲內置採樣器合成單元的一部分,因此該設備具有足夠的計算能力。