SWIFT:用于AVAudioPlayer的addPeriodicTimeObserverForInterval

Swift: addPeriodicTimeObserverForInterval for AVAudioPlayer(SWIFT:用于AVAudioPlayer的addPeriodicTimeObserverForInterval)
本文介绍了SWIFT:用于AVAudioPlayer的addPeriodicTimeObserverForInterval的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我仍在努力寻找一种方法,当AVAudioPlayer音乐文件在特定的时间命中时,您可以调用操作。

我知道我可以使用AVPlayer类中的addPeriodicTimeObserverForInterval方法,但是我不想使用AVPlayer,因为它不使用playing()stop()numberOfLoops等方法,因为我当前正在使用它们

是否有AVAudioPlayer使用的替代方法?如果是,当AVAudioPlayer到20秒时,我将如何操作。

推荐答案

我认为您的选择是切换到使用AVPlayer,或者使用NSTimer,如上面的Ashish或其他方法所建议的那样"伪造"它。

NSTimer的精确度不会超过1/50秒(它们在主线程上运行,并且仅在您的应用访问Run循环时触发)。

您可以尝试注册AVAudioPlayercurrentTime属性的KVO通知,然后检测特定秒内的时间。

KVO通知可能会占用大量的CPU,甚至可能导致音频播放卡顿,因为每次音频播放器更改currentTime属性时都会触发KVO通知,即使是每1000秒触发一次。

如果您只需要一秒内的分辨率,并且不一定要精确,那么NSTmer就是您的选择。

这篇关于SWIFT:用于AVAudioPlayer的addPeriodicTimeObserverForInterval的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
Dropbox Files.download does not start when number of files in folder is gt; 1000(当文件夹中的文件数为1000时,Dropbox Files.Download不会启动)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)