我正在尝试使用AKPlayer在我的多通道音频播放项目中实施。我从AKPlayer.play中学到的是,我可以通过分配from:to:属性来设置播放区域。但是我想知道是否只能重复/循环分配的区域。这是一个示例:
func preparePlayer() {
player.isLooping = true
player.buffering = .always
}
func startPlayer() {
let startTime = AVAudioTime.now() + 0.25
player.play(from: 0, to: 4, at: startTime, hostTime: nil)
}
在这种情况下,播放器可以永远循环播放(当player.isLooping为true时),也可以只播放所选区域一次(4秒)。有什么办法可以我做到的-播放某个剪辑4秒钟,然后无缝地重复该特定部分?如果是这样,我可以像在AVAudioplayer中那样分配numberOfLoop,而不是isLooping = true吗?感谢您帮助我探索。 <3
答案 0 :(得分:1)
我找到了一个答案!我可以在preparePlayer()函数上添加“ player.loop.start / player.loop.end”,以便分配要重复的区域。我不必在player.play(from:to :)上放置参数。在这里:
func preparePlayer() {
player.isLooping = true
player.buffering = .always
player.loop.start = 0
player.loop.end = 7.5
}
func startPlayer() {
let startTime = AVAudioTime.now() + 0.25
player.play(at: startTime)
}
就是这样!看来我必须将player.buffering设置为.always而不是.dynamics,这样循环才能无缝进行。但是我仍然想知道如何设置重复次数。我猜想numberOfLoop函数在AKPlayer上不起作用..?非常感谢。
答案 1 :(得分:0)
AKPlayer中没有numberOfLoop变量。如果您想自己捕获完成事件,则不要使用缓冲或isLooping-这样,当完成时您会收到通知,并增加自己的计数器并重新启动播放器。播放器执行缓冲循环时,不会存在循环循环的内部回调。