iPhone声音:在播放时调整音频文件的播放速度
Posted
技术标签:
【中文标题】iPhone声音:在播放时调整音频文件的播放速度【英文标题】:iPhone Sound: Adjust speed of playback of audio file while playing 【发布时间】:2009-07-28 00:14:45 【问题描述】:在用于 iPhone/iPod touch 的 Objective C 中播放音频时,有没有办法调整音频的播放速度?
如果可以向后播放文件也会很有趣。
谢谢
汤姆
【问题讨论】:
【参考方案1】:AVAudioPlayer
不会给你速度控制,但它可以让你设置位置,所以你可以像 QuickTime Player 一样做一个穷人的加速/反向:通过文件跳转并播放小 sn -ps 以正常速度。
或者您自己使用离线AudioQueue
解压缩样本并执行您想要的任何速率。我就是这么做的。
【讨论】:
您好节奏拳手,感谢您的回复!你能给我发一封电子邮件到 tom@kiesl.eu 我想问你一个问题......谢谢汤姆 为什么不在 Stack Overflow 上提问呢?【参考方案2】:一种简单的方法是在将采样率发送到播放引擎(音频队列、远程 I/O 单元、OpenAL)时调整采样率。对于 PCM——我不确定这对 PCM 以外的任何东西都有效(所以你必须先用音频转换器服务解压缩 MP3 或 AAC)——你可以通过像这样调整 AudiostreamBasicDescription 来加速你的音频:
audioStreamDesc.mSampleRate = audioStreamDesc.mSampleRate * 1.2;
请注意,这也会改变音频的音调:不仅更快,而且音调也更高。 Mac 有一个系统提供的音频单元,可让您在不改变音高的情况下改变播放速度,但在 iPhone 上似乎没有。
【讨论】:
您好,感谢您的回复。是的,我这样做了,效果很好,但是我无法在播放时更改速度。或者我可以吗?倒着玩也是不可能的,不是吗?谢谢汤姆 我认为音频转换器不适用于 iPhone 上的 MP3/AAC。除非它已在 3.0 中修复,否则您必须使用离线音频队列。【参考方案3】:从 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。
【讨论】:
以上是关于iPhone声音:在播放时调整音频文件的播放速度的主要内容,如果未能解决你的问题,请参考以下文章
iOS 在通过 AVAudioUnitTimePitch 播放时调整音高