iPhone声音:播放时调整音频文件的播放速度

时间:2009-07-28 00:14:46

标签: iphone objective-c audio

有没有办法在用于iPhone / iPod touch的Objective C中播放时调整音频的播放速度?

如果可以向后播放文件也会很有趣。

由于

汤姆

3 个答案:

答案 0 :(得分:6)

AVAudioPlayer没有给你速度控制,但它确实让你设置位置,所以你可以像QuickTime Player那样做一个穷人的加速/反转速度:跳过文件并播放正常速度的小片段。

或者您使用离线版AudioQueue自行解压缩样本并执行您想要的任何费率。这就是我的工作。

答案 1 :(得分:5)

一种简洁的方法是在将采样率发送到播放引擎(音频队列,远程I / O单元,OpenAL)时调整采样率。对于PCM - 我不确定这是否适用于除PCM之外的其他任何东西(所以你必须首先使用音频转换器服务解压缩MP3或AAC) - 你可以通过调整AudioStreamBasicDescription来加速你的音频:

audioStreamDesc.mSampleRate = audioStreamDesc.mSampleRate * 1.2;

请注意,这也会改变音频的音高:不仅速度更快,而且声音也更高。 Mac有一个系统提供的音频单元,可以让你在不改变音高的情况下改变播放速度,但在iPhone上似乎没有。

答案 2 :(得分:5)

从iOS 6开始(我相信5)你可以在AVAudioPlayer中调整播放率;没有必要的额外代码:

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

速率范围介于.5和2.0之间,只要在开始播放前将enableRate设置为YES,就可以在播放期间进行调整。