检查AVPlayer的播放状态
|
有没有办法知道ѭ0播放是否停止或结束?
没有找到相关结果
已邀请:
11 个回复
揽芳僵迷仇
要跟踪播放,您可以: 通过使用addPeriodicTimeObserverForInterval:queue:usingBlock:或addBoundaryTimeObserverForTimes:queue:usingBlock:来“跟踪AVPlayer对象中播放头位置的变化”。 示例来自苹果:
吞睫素
Swift 3扩展名:
肉脓措伪
至于第二个问题,要知道avPlayer是否已结束,最简单的方法是设置一个通知。
例如,当播放到结尾时,您可以将其倒带到视频的开头,并将“暂停”按钮重置为“播放”。
如果您要创建自己的控件,那么这些示例很有用,但是如果您使用AVPlayerViewController,则控件是内置的。
膝垫富顷
不是检查视频是否正在播放的方法(可能会停顿)。从
的文档中: 指示所需的播放速率; 0.0表示“已暂停”,1.0表示希望以当前项目的自然速率播放。 关键字“渴望播放”-ѭ10的比率并不表示视频正在播放。 自iOS 10.0起的解决方案是使用ѭ11,可以在
属性中观察到。 iOS 10.0(9.0、8.0等)之前的解决方案是推出您自己的解决方案。 rate14ѭ的速率表示视频已暂停。当“ 15”时,表示视频正在播放或停顿。 您可以通过以下方式观察玩家时间来找出差异:
该区块以
返回当前玩家时间,因此,将ѭ18from(最近一次从区块收到的时间)与
(刚刚报告该区块的时间)的比较将表明玩家是在玩还是已停顿。例如,如果
和
,则说明玩家已停滞。 正如其他人所指出的那样,用“ 22”来指示播放是否完成。
窃誓额
的一个更可靠的替代方法是将自己添加为玩家
属性的观察者。
然后检查观察到的速率的新值是否为零,这意味着播放由于某种原因已停止,例如到达结尾或由于空缓冲区而停止。
对于
情况,要了解到底是什么原因导致播放停止,可以进行以下检查:
并且不要忘记让播放器到达终点时停止播放:
涸坍饺
更新:
条件更改为
,因为如果视频反向播放,由于朱利安指出,它可能为负。 注意:这可能与上面的答案(Maz \'s)相同,但是在Swift \'!player.error \'中给了我一个编译器错误,因此您必须使用\'player.error == nil \'检查错误在Swift中。(因为error属性不是\'Bool \'类型) AVAudioPlayer:
AVQueuePlayer:
拟蓬
览幕堤分
和
谢谢maxkonovalov!
郸身
量华
磐乓铝举