MPMusicPlayerController速度调整

时间:2011-02-28 21:58:38

标签: iphone xcode audio

HI,

有没有办法调整MPMusicPlayerController正在播放的歌曲的速度?

我到处搜索但没有找到任何有用的东西。如果没有办法,我在哪里可以找到与其他组件一起使用的示例?有人说OpenAL,但我找不到任何明确的方法来使用iPod库并改变歌曲的速度......

主要是我需要的是:

  1. 用户通过MPMusicPlayerController
  2. 从iPod库中选择一首歌曲
  3. 你有2个按钮:Slow Down&加速
  4. 如果用户按下“Slow Down”,歌曲的速度会减慢5%或更低。 “加速”反之亦然。

    我真的希望有人能帮助我!

    提前致谢!

3 个答案:

答案 0 :(得分:4)

您可以在iOS 3.2及更高版本中执行此操作 -

[musicPlayer play];
[musicPlayer setCurrentPlaybackRate:2.0];

参考:https://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPMediaPlayback_protocol/Reference/Reference.html#//apple_ref/occ/intfp/MPMediaPlayback/currentPlaybackRate

答案 1 :(得分:1)

您可以将AVAudioPlayer和AVPlayer用于上述目的 他们有一个速率属性,可以设置歌曲的速度。

[AVPlayer setRate:1.25];  // 25% faster

但是,AVPlayer无法将速度提高5%但速度提高25%,AVAudioPlayer无法将速度提高到iOS 5及以上。
如果您想选择其他替代方案,那么Dirac是最佳选择。试试免费的DIRAC 3 LE

使用此Link了解如何使用Dirac。有关更多信息,请与我们联系。

@girish_vr

答案 2 :(得分:-1)

不,你不能只使用MPMusicPlayerController。

如果您不介意音高与速度变化成比例上下变化,那么您可以在将声音文件转换为原始PCM样本文件或缓冲区后使用OpenAL重采样器。

如果您不希望音高发生变化,您需要的是DSP时间间距拉伸/修改/校正技术。 OpenAL无法做到这一点,但有商业DSP库(DIRAC可能是一个)可以在iOS上实现。您也可以尝试编写自己的相位声码器,但这是非平凡的数字信号处理代码。