[英]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.