AudioKit AKPlayer未开启bufferLooping时isLooping失效是否为预期行为?
AKPlayer isLooping失效问题:我的经验与解答
我在使用AudioKit 4.2搭配Xcode 9.3的Playgrounds时,也遇到过完全一样的问题!而且不止“Connecting Nodes”这一个Playground,多个示例项目里都存在这个现象。
其他开发者是否遇到同样问题?
是的,当时在AudioKit的社区讨论里,有不少同版本环境的开发者反馈过这个情况。大家都发现,只要没提前开启bufferLooping,设置AKPlayer.isLooping = true就完全没效果,音频播放一次就停止了。
是否为预期设计?
这确实是AudioKit 4.x版本的预期设计限制,而非bug。在4.x的架构里,AKPlayer的循环功能是基于底层的缓冲区循环(bufferLooping)实现的:
bufferLooping是控制是否启用循环功能的底层开关,只有先打开它,上层的isLooping属性才能生效。- 如果你跳过
bufferLooping = true这一步,直接设置isLooping,Player不会触发循环逻辑,因为底层根本没提供循环支持。
临时解决办法
如果需要在当前环境下实现循环播放,必须按顺序设置:
// 示例代码 let audioURL = Bundle.main.url(forResource: "your-audio-file", withExtension: "wav")! let player = AKPlayer(url: audioURL) // 第一步:开启底层缓冲区循环支持 player.bufferLooping = true // 第二步:启用循环播放 player.isLooping = true player.play()
另外补充一句:如果可以升级环境,AudioKit 5.x及以上版本已经重构了AKPlayer的循环逻辑,不再需要依赖bufferLooping,直接设置isLooping就能正常循环,这个问题也就不存在了。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

