【问题标题】:AVAudioPlayer: How to Change the Playback Speed of Audio?AVAudioPlayer:如何更改音频的播放速度?
【发布时间】:2011-01-21 23:32:39
【问题描述】:

我想控制AVAudioplayer中音频的播放速度。这可能吗?如果是这样,你会怎么做?

【问题讨论】:

  • 查看AVAudioplayer的API。
  • 看起来它适用于 iOS5 - docs 并查看 rate。谢谢,

标签: iphone avaudioplayer


【解决方案1】:

现在可以更改播放速度了。

示例代码:

player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&err];
player.volume = 0.4f;
player.enableRate = YES; //<--
[player prepareToPlay];
[player setNumberOfLoops:0];
player.rate = 2.0f; //<-- Playback Speed
[player play];

enableRate 设置为YES,您可以更改它。

docs 中查看更多信息。

【讨论】:

  • 我可以确认这在 iOS 6 中就像一个魅力。将 enableRate 设置为 YES,您可以在 0.5 和 2.0 之间调整 rate 的值(半速到双速),无需音调校正.它甚至可以在播放期间进行调整,只要在开始播放音频之前设置 enableRate。
【解决方案2】:

斯威夫特 2 - 斯威夫特 5

您可以通过以下方式提高费率:

player.enableRate = true
player.prepareToPlay()
player.rate = 2.0
player.play()

如果你想循环,你可以添加这个:

player.numberOfLoops = 3

【讨论】:

  • 相反的可能player.rate = 0.8
  • 我想是的!你可以试试,很快:)
  • 我怎样才能得到第二个或更好的毫秒数?
  • 投反对票。 enableRate 应该在调用prepareToPlay() 之前设置。见the docs
  • 当然 @Adam 感谢您指出这一点。下次,请随时通过编辑来改进答案。
【解决方案3】:

试试这个 -

audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
        audioP.enableRate = true
        audioP.prepareToPlay()
        audioP.rate = 1.5
        audioP.play()

【讨论】:

    【解决方案4】:

    你不能。您只能更改音量而不是播放速度。

    我认为要做到这一点,您将不得不使用更低级别的 Audio Queue API 并手动操作音频流以应用该效果。

    【讨论】:

    【解决方案5】:

    设置 enableRate = YES 然后你可以在 0.1 和 2.0 之间调整速率来减速和加速(1.0 是正常速度)

    【讨论】:

      【解决方案6】:

      AVAudioPlayer 不支持播放速度设置。音频队列服务使用起来相当痛苦,因此您可能想尝试 OpenAL。有关如何在 Objective-C 中包装 OpenAL 的示例,请参阅来自 Cocos2DFinch 的声音引擎。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        • 2011-01-29
        • 2023-02-22
        • 2011-03-20
        相关资源
        最近更新 更多