ios - AVPlayer layer showing blank screen when application running or idle for 15 minutes -


i create custom video player using avplayer() , avplayerlayer() classes. code working fine application fresh start goes wrong , showing blank screen when application running or idle more 15 minutes. when occurrences issue classes of application having avplayerlayer showing blank screen. don't know why happens.

avplayer() , avplayerlayer() instances initialized below.

override func viewdidload() {     super.viewdidload()      // additional setup after loading view.           dispatch_async(dispatch_get_main_queue(), {               let playeritem = avplayeritem(url: self.itemurl)             self.avplayer = avplayer(playeritem: playeritem)             nsnotificationcenter.defaultcenter().addobserver(self,                 selector: #selector(videopreviewview.restartvideofrombeginning),                 name: avplayeritemdidplaytoendtimenotification,                 object: self.avplayer.currentitem)             self.avplayerlayer = avplayerlayer(player: self.avplayer)             self.view.layer.addsublayer(self.avplayerlayer)             self.avplayerlayer.frame = self.view.bounds             self.avplayer.pause()         })      } } 

play function

func playvideo(sender: anyobject) {      avplayer.play()     if (avplayer.rate != 0 && avplayer.error == nil) {         print("playing")     }     slider.hidden=false     mytimer = nstimer.scheduledtimerwithtimeinterval(0.1, target: self, selector: #selector(videopreviewview.updateslider), userinfo: nil, repeats: true)     slider.addtarget(self, action: #selector(videopreviewview.slidervaluedidchange(_: )), forcontrolevents: uicontrolevents.valuechanged)     slider.minimumvalue = 0.0     slider.continuous = true     pausebutton.hidden=false     playbutton.hidden=true     closeviewbutton.hidden = false } 

restart video

func restartvideofrombeginning() {      let seconds: int64 = 0     let preferredtimescale: int32 = 1     let seektime: cmtime = cmtimemake(seconds, preferredtimescale)     avplayer?.seektotime(seektime)     avplayer?.pause()     pausebutton.hidden=true     playbutton.hidden = false     closeviewbutton.hidden=false } 

func updateslider() {     if (avplayer.rate != 0 && avplayer.error == nil) {         print("playing")     }     else{         print("not playing.")     }     currenttime = float(cmtimegetseconds(avplayer.currenttime()))     duration = avplayer.currentitem!.asset.duration     totalduration = float(cmtimegetseconds(duration))     slider.value = currenttime // setting slider value current time     slider.maximumvalue = totalduration // setting maximum value total duration of video } 

 func slidervaluedidchange(sender: uislider!) {     timeinsecond=slider.value     newtime = cmtimemakewithseconds(double(timeinsecond), 1)// setting new time using slider value     avplayer.seektotime(newtime) } 

@ibaction func closeviewaction(sender: anyobject) {     pausebutton.hidden=true     self.avplayer.pause()      self.avplayerlayer.removefromsuperlayer()     self.dismissviewcontrolleranimated(true, completion: nil)   } 


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -