when using avplayer
, there way progress of playbacklikelytokeepup
? thinking @ loadedtimeranges
see how has been buffered far, understand, playbacklikelytokeepup
property internally made prediction , not provide value of how data needed true.
to put perspective, i'm trying have progress view reaches 100% video starts playing.
to begin playing when avplayer play continuously, can observe key-value changes on playbacklikelytokeepup, this:
let playerkeepup = "playbacklikelytokeepup" var isplayerready:bool = false
and in initialiser add:
// adding observers status: self.player?.currentitem?.addobserver(self, forkeypath: playerkeepup, options: ([nskeyvalueobservingoptions.new, nskeyvalueobservingoptions.old]), context: &playeritemobservercontext)
and finally, track when player ready play without getting stuck:
// mark: kvo observing methods: override public func observevalueforkeypath(keypath: string?, ofobject object: anyobject?, change: [string : anyobject]?, context: unsafemutablepointer<void>) { switch (keypath, context) { case (playerkeepup string, &playeritemobservercontext): if(self.player.currentitem?.playbacklikelytokeepup == true) { self.isplayerready = true // here fill progress view :-) self.delegate?.playerready(self.playerurl! string) } break default: super.observevalueforkeypath(keypath, ofobject: object, change: change, context: context) } }
last not least, remember remove kvo observance or else you'll crash when de-allocating player:
deinit { // remove observer: self.player?.currentitem?.removeobserver(self, forkeypath: playerkeepup, context: &playeritemobservercontext) }
hope helps :-)
Comments
Post a Comment