2010-03-11 135 views
2

我希望能夠播放使用AVAudioRecorder @ 1.5x或2.0x速度錄製的音頻。 AVAudioPlayer中沒有任何支持這一點的東西。如果可能的話,我會很感激一些建議,以及如何通過iPhone 3.x SDK完成這些建議。我並不過分擔心降低音調來彌補增加的播放速度,但能夠做到這一點是最佳選擇。iPhone SDK:使用核心音頻更改播放速度AVAudioPlayer

回答

1

請參閱this question。換句話說,您必須使用不同的API,如音頻隊列服務。如果你想嘗試一個簡單的黑客攻擊,你可以嘗試加倍音頻文件的採樣率屬性。它可能不會工作。另外,要注意的是,在保持相同音調的同時,調整播放速度需要相當的CPU。您需要使用名爲"time stretching"的可用技術之一。另外,如果您現在還沒有意識到這一點,那麼在iPhone上使用音頻來做複雜的事情是一大痛苦,因爲Apple的文檔通常非常糟糕或者根本不存在。

+0

謝謝你的答案。 – memmons 2010-03-13 02:20:12

+0

因此,如果我以8000的採樣率進行錄製,那麼理論上將採樣率更改爲12000進行播放應該會導致1.5倍的速度? – memmons 2010-03-22 05:38:56

+0

是的,如果它將採取任意採樣率而不是普通採樣率(44100,22050等)。我認爲它會的,但我沒有嘗試過。 – 2010-03-22 15:12:08

2

改變採樣率應該像磁帶錄音機一樣工作,如果你玩得更快。一切都變得更高。要使音高保持不變,您需要設置一個包含AUPitch效果的音頻單位圖形,並按照您將採樣率增加相同的比率降低音高。

+0

謝謝你。 – memmons 2010-03-22 05:39:27

0

如果您想播放音頻的速度更快或更慢,avAudioPlayer中有一種內置方法。您是否嘗試過AudioPlayer Rate屬性?在斯威夫特它會是這樣的 -

audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf") 
    audioP.enableRate = true 
    audioP.prepareToPlay() 
    audioP.rate = 1.5 
    audioP.play() 
相關問題