【发布时间】:2011-10-03 02:00:15
【问题描述】:
是否可以播放用户 ipod 库中的音频文件并在播放器到达某个时间点时发生回调?我需要它非常准确,因此仅使用 currentPlaybackTime 之类的方法可能还不够,因为浮点相等是不准确的。我可以使用A - B < Epsilon float 检查,但有没有更好、更准确的方法来实现这一点?
【问题讨论】:
标签: iphone ios audio callback core-audio
是否可以播放用户 ipod 库中的音频文件并在播放器到达某个时间点时发生回调?我需要它非常准确,因此仅使用 currentPlaybackTime 之类的方法可能还不够,因为浮点相等是不准确的。我可以使用A - B < Epsilon float 检查,但有没有更好、更准确的方法来实现这一点?
【问题讨论】:
标签: iphone ios audio callback core-audio
如果您可以针对 iOS 4.0 或更高版本,请尝试使用 AVPlayer。然后就可以使用了
- (id)addBoundaryTimeObserverForTimes:(NSArray *)times queue:(dispatch_queue_t)queue usingBlock:(void (^)(void))block
它采用 CMTimes 的 NSValues 数组,并在每次达到边界时间之一时运行块的内容。 (请注意一些行为,例如,如果您在块内暂停音频文件,则在您取消暂停时回调将再次触发 。
由于 CMTime 不是浮点数,我认为这将比重复检查 currentTime 更准确。
【讨论】: