繁体   English   中英

在 AKPlayer 上循环选择区域

[英]Looping selected region on AKPlayer

我正在尝试使用 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

我找到了一个答案! 我可以在 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 上不起作用..? 非常感谢。

AKPlayer 中没有 numberOfLoop 变量。 如果您想自己捕获完成事件,则不要使用缓冲或 isLooping - 然后您可以在完成时收到通知并增加自己的计数器并重新启动播放器。 当播放器进行缓冲循环时,没有循环循环的内部回调。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM