You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS AVPlayer使用addBoundaryTimeObserver()暂停视频存在1%时间戳偏差问题

AVPlayer addBoundaryTimeObserver() 触发暂停的精度问题

我通过addBoundaryTimeObserver()实现AVPlayer在指定时间戳暂停视频,代码如下:

self.timeBoundaryObserver = self.player.addBoundaryTimeObserver(forTimes: [NSValue(time: CMTime(seconds: timeStamp, preferredTimescale: (player.currentItem?.asset.duration.timescale)!))], queue: DispatchQueue.main, using: { [unowned self] in
    self.player.pause()
})

99%的场景下这段代码表现正常,但存在1%的概率会在偏差极大的时间戳处触发暂停,且没有明显的失败规律。

目前我用了个临时方案:把视频拆分为两段,在第一段视频结束时触发暂停,但更希望这段代码能实现100%的精准触发。期待Apple未来能优化相关函数,此前我也见过AVPlayer有未公开的改进。

相关Apple官方文档:

  • AVPlayer addBoundaryTimeObserver()
  • AVPlayer pause()

该问题的实际表现可在iOS应用商店我的应用Voomoo中查看。

内容的提问来源于stack exchange,提问作者Jonathan Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:13:11