簡體   English   中英

iPhone:使用音頻單元更改播放速度

[英]iPhone: Change playback speed with Audio Units

使用音頻單元時,有哪些不同的方法可以改變iPhone上音頻的播放速度 每種解決方案的優點/缺點是什么?

我有一個調音台和一個IO單元。 我是否需要添加另一個單元(例如轉換器單元)? 我應該設置哪些音頻單元參數,哪個(輸入或輸出)總線上哪個音頻單元?

我目前的設置:

  ------------------------- ------------------------- | mixer unit | -----------> | IO unit | ------------------------- ------------------------- 

以下所有解決方案都將改變音頻的音高 (以及播放速度)。 要在更改播放速度后更正音頻的音高 ,您需要使用第三方音頻庫 (例如具有LGPL許可證的SoundTouch ,以便您可以在應用中使用它,而無需將其打開 -來源,或DiracLE或免費的smbPitchShift )。 有一個音頻單元( AUPitch ),可以改變你的音頻音調,但它不適用於iPhone ; 僅適用於Mac。

以下所有解決方案都經過測試,並且工作......

解決方案#1 [最佳解決方案]

3D混音器單元:使用3D混音器單元而不是多聲道混音器單元,並在輸入范圍上設置k3DMixerParam_PlaybackRate。

優點: k3DMixerParam_PlaybackRate可以實時設置,同時播放音頻,沒有任何剪輯聲音或其他副作用。 一旦你有音頻單元,它也很容易實現。

缺點:影響音頻的音高,但如果您只需要將播放速率改變+/- 8%,音高的差異就不會明顯。

解決方案#2

更改采樣率:更改調音台單元輸出總線上的采樣率。 更改采樣率與添加和刪除采樣非常相似。

優點:如果您想將播放速度乘以整數的一小部分(例如1.2倍),則效果很好。

缺點:無法動態設置改變混頻器輸出的采樣率; 僅在初始化混合器單元時。 影響音頻的音高,但如果您只需要將播放速率改變+/- 8%,音高的差異就不會明顯。

audioDescriptionMixerOutput.mSampleRate = 1.2*kGraphSampleRate;

解決方案#3

添加/刪除樣本:僅在渲染回調函數中將每秒,第三,...音頻樣本傳遞到音頻單元的輸入(在我的情況下為混音器單元)。

優點:如果您希望將音頻播放速度加快或減慢2倍,3倍,4倍等,則效果很好。它也很容易實現。

缺點:您只能將播放速度乘以整數因子。 例如,通過添加或刪除樣本,無法將音頻播放加速1.2倍。 影響音頻的音高。

暫無
暫無

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

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