繁体   English   中英

在用户指定的时间从AKPlayer获取回调

[英]Get a callback from AKPlayer at a user specified time

我试图在 AKPlayer 的文件播放中的给定点获得回调(当前,就在结束之前)。 我在addBoundaryTimeObserver()上看到了 Apple 文档,它可以工作,但似乎无法从 AKPlayer 访问(我猜是 AVAudioPlayerNode 与 AVPlayer 的事情)。 有什么建议么? 我在 AVAudioPlayerNode 中看到了一些回调......也许我可以根据所需的时间确定缓冲区并使用dataConsumed

目标是在文件播放完毕之前触发另一个事件(完成时有一个回调,但显然为时已晚)。

如果有人做过类似的事情,或者知道类似的事情(要点等),那就太好了。

有一个名为AKPlaygroundLoop的 AudioKit 游乐场,它向您展示如何基于CADisplayLink定期调用任意处理程序。 在您的处理程序中,您可以检查 AKPlayer 的currentTime ,如果它接近尾声(比如 1 秒前),您可以触发您想要的任何事件。

这是一个粗略的大纲:

var player: AKPlayer!
var loop: AKPlaygroundLoop!

func play() {
    // ...
    playgroundLoop = AKPlaygroundLoop(frequency: 10.0, handler: myHandler)
}

func myHandler() {
    if player.currentTime >= player.duration - 1.0 {
        // trigger some event
    }
}

另请参阅此答案以获取有关如何与 AudioKit 同步事件的建议。

暂无
暂无

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

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