确定,
所以我试图将三个声音文件无缝地循环在一起,第二个文件循环播放n次。让我们假设我可以通过将它们组合在一起,让它们在另一个程序中无缝地循环。然而,当我使用avaudioplayer的audioPlayerDidFinishPlaying委托方法时,对接会有一点点延迟(即使使用“prepareToPlay”方法。另一点复杂性是中间声音需要继续循环n次AKA,只要touchesDidEnd方法尚未调用,此时程序将播放第3个和最后一个剪辑以结束声音“播放列表”。
作为一个例子,让观众在节目后给予掌声。声音文件A将包含掌声的初始膨胀,声音文件2将包含人群的循环样本以连续的速度欢呼,直到用户抬起按钮,此时程序应该进入第3声音文件,将是人群的掌声。
所以我最初使用AVAudioPlayer的尝试似乎不够快,无法延迟循环,所以我需要另一种更快的方法来做这些,建议?
答案 0 :(得分:1)
对于循环,请查看AVAudioPlayer的numberOfLoops
属性。比使用播放器的委托自己处理循环逻辑更好。
对于从一个循环样本平滑地淡化到'尾'样本,使用AVAudioPlayer很难实现。可能你最好的选择是使用尾随声音文件启动另一个播放器并使用计时器使用每个的volume
属性在两者之间快速交叉淡入淡出。
如果这不令人满意(我怀疑它可能不是这样),我认为你没有多少选择,只需要下载到AudioQueue API来解决这个问题。