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声音:在播放时调整音频文件的播放速度的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone/iPad 应用程序中播放音频文件?

iOS 在通过 AVAudioUnitTimePitch 播放时调整音高

使用不同的 swift 文件播放音频

如何在 iPhone/iPad 中播放流音频

iPhone:AVAudioPlayer 并不总是在设备上播放音频

使用 naudio 动态播放音频文件