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

cra*_*mmy 1 iphone audio objective-c

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

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

谢谢

汤姆

Rhy*_*man 6

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

或者您自己使用离线解压缩样本AudioQueue并执行您想要的任何速率.我就是做这个的.

  • 为什么不把它作为Stack Overflow上的问题? (8认同)

inv*_*ame 5

一种俗气的方法是在将采样率发送到回放引擎(音频队列,远程I/O单元,OpenAL)时调整采样率.对于PCM - 我不知道这会工作比PCM以外的任何其他(所以你必须先解压缩的MP3或AAC与音频转换器服务) - 你可以通过调整AudioStreamBasicDescription你这样的声音加速:

audioStreamDesc.mSampleRate = audioStreamDesc.mSampleRate * 1.2;
Run Code Online (Sandbox Code Playgroud)

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


Eli*_*rke 5

从iOS 6开始(我相信5)你可以在AVAudioPlayer中调整播放速度; 无需额外代码:

    player = [[AVAudioPlayer alloc] initWithContentsOfURL:
              [NSURL fileURLWithPath:path] error:&err];
    player.enableRate=YES;
    player.rate = 0.5;
    [player play];
Run Code Online (Sandbox Code Playgroud)

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