有没有办法在用于iPhone / iPod touch的Objective C中播放时调整音频的播放速度?
如果可以向后播放文件也会很有趣。
由于
汤姆
答案 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,就可以在播放期间进行调整。