2011-11-07 277 views
5

我一直在愉快地合成音頻(在44.1khz)並通過RemoteIO音頻單元發送出去。我注意到,當通過HDMI走出某個型號的電視時,我的應用程序的音頻「亂碼」。在我看來,這個問題與這臺電視正在尋找48khz的音頻數據有關。通過HDMI的iOS音頻 - 如何處理48khz採樣率?

這裏有一些問題:

  • 不RemoteIO採用哪個設備它輸出到的採樣率是多少?如果我通過HDMI將音頻發送到要求48kz的設備,我的RemoteIO回撥緩衝區是否變爲48khz?

  • 有沒有一些簡單的方法來強制RemoteIO仍然按照44.1khz的方式思考,並且足夠聰明,在將數據傳遞到設備之前自行執行任何必要的採樣率轉換?

  • 如果RemoteIO確實只是推遲了它連接的設備,那麼我想我需要在我的綜合引擎和遠程IO之間進行一些採樣率轉換。 AudioConverterConvertComplexBuffer是最好的方法嗎?

回答

1

如果您想採樣率轉換,請嘗試使用音頻隊列API,或使用某些DSP代碼在您自己的應用程序中進行轉換。

是否可以配置RemoteIO緩衝區大小或採樣率可能取決於iOS設備型號,操作系統版本,音頻路徑,背景模式等,因此當使用RemoteIO時,應用程序必須適應不同的緩衝區大小和採樣率。

3

解決了我的問題。我錯誤地認爲渲染回調請求的幀數是2的冪。更改我的代碼以適應任意數量的幀,現在似乎都可以正常工作。