【问题标题】:One AVAudioPlayer to play multiple sounds without re-initialising?一个 AVAudioPlayer 无需重新初始化即可播放多种声音?
【发布时间】:2015-03-02 09:40:45
【问题描述】:

我想使用 AVAudioPlayer 的单个实例来处理一些不同的快速音效,可以按任何顺序触发,等等。

据我所知,更改要播放的音频文件的唯一方法是使用initWithContentsOfURL:重新初始化播放器。

那么,有两个问题:既然这就是我现在正在做的事情,可以吗?重新分配等方面的更多开销。我应该关心吗?而且,有没有办法将所有四个文件放在那里并告诉它一次只加载一个,而不是按顺序加载(即使用AVQueuePlayer)?

【问题讨论】:

    标签: ios avfoundation core-audio avaudioplayer avplayer


    【解决方案1】:

    如果文件很短(听起来很像),我建议将它们加载到 AVAudioBuffer 并安排这些缓冲区在正确的时间在 AVAudioPlayer 上播放。

    请参阅 AVAudioEngine in Practice (transcript) 上的 WWDC talk

    【讨论】:

    • 不幸的是,这仅适用于 iOS8,但很好的建议!
    • 您能否更具体地说明您所针对的操作系统版本?
    • 是的,在 iOS7 上,AVAudioPlayer 与初始化它的文件或数据缓冲区紧密耦合。所以我看不到你绕过重新初始化。另一个一般的想法是将您的小文件连接成一个较大的文件,并以正确的偏移量进行搜索和播放,但 API 不支持搜索/偏移量播放。你看过 AVPlayer(而不是 AVAudioPlayer)吗?大概,你不是在播放 iPod 库 url?
    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多