2010-03-11 75 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() 
相关问题