2009-07-28 154 views

回答

6

AVAudioPlayer不給你速度控制,但它確實讓你設置的位置,所以你可以做一個窮人的加速/反轉以同樣的方式QuickTime播放器的功能:通過跳過文件並以正常速度播放小片段。

或者您可以使用脫機AudioQueue自行解壓縮樣本,然後以您想要的速度執行任何操作。我就是做這個的。

+0

嗨Rhythmic Fistman, 感謝您的回覆!您可以給我發一封電子郵件給[email protected]我想問你一個問題... 謝謝 湯姆 – crashtesttommy 2009-07-30 00:37:57

+8

爲什麼不問這是Stack Overflow的問題? – 2009-07-30 03:02:04

5

一個俗氣的方法是當您將其發送到播放引擎(音頻隊列,遠程I/O單元,OpenAL)時調整採樣率。對於PCM-我不確定這是否適用於除PCM以外的任何其他功能(因此您必須首先使用Audio Converter Services解壓縮MP3或AAC) - 您可以通過調整AudioStreamBasicDescription來加快音頻的播放速度:

audioStreamDesc.mSampleRate = audioStreamDesc.mSampleRate * 1.2; 

請注意,這也會改變音頻的音高:不僅速度更快,而且音高也更高。 Mac有一個系統提供的音頻單元,可以讓您在不改變音調的情況下改變播放速度,但它似乎在iPhone上不存在。

5

截至iOS 6(我相信5),您可以調整AVAudioPlayer內的播放速度;必要沒有額外的代碼:

player = [[AVAudioPlayer alloc] initWithContentsOfURL: 
       [NSURL fileURLWithPath:path] error:&err]; 
    player.enableRate=YES; 
    player.rate = 0.5; 
    [player play]; 

率0.5和2.0之間的範圍內,並且如enableRate被播放開始之前設置爲YES,可以在播放過程中,只要調整。