Hello I have set my UISlider
minimum value to 0.00. Then I set it's max value in this way.
self.viewPlayer.layer.addSublayer(playerLayer) let duration : CMTime = avPlayer.avPlayer.currentItem!.asset.duration let seconds : Float64 = CMTimeGetSeconds(duration) sliderBar.maximumValue=Float(seconds) sliderBar!.isContinuous = false sliderBar!.tintColor = UIColor.green
But I am getting this exception
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to set a slider's minimumValue (0.000000) to be larger than the maximumValue (nan)' enter code here
I know after prepareForPlay()
to actual playing it takes some time to really play the video. So how can I detect when the player really started to play the video? Please help me. Thanks
Currently with swift 5 the easiest way to check if the player is playing or paused is to check the . timeControlStatus variable.
AVPlayer does not have a method named stop . You can pause or set rate to 0.0. Show activity on this post. I usually seekToTime 0.0, then pause.
Since iOS 10 you can observe timeControlStatus
property of AVPlayer. It can be .playing
.
Check the code:
private func setupAVPlayer() { avPlayer.addObserver(self, forKeyPath: "status", options: [.old, .new], context: nil) if #available(iOS 10.0, *) { avPlayer.addObserver(self, forKeyPath: "timeControlStatus", options: [.old, .new], context: nil) } else { avPlayer.addObserver(self, forKeyPath: "rate", options: [.old, .new], context: nil) } } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if object as AnyObject? === avPlayer { if keyPath == "status" { if avPlayer.status == .readyToPlay { avPlayer.play() } } else if keyPath == "timeControlStatus" { if #available(iOS 10.0, *) { if avPlayer.timeControlStatus == .playing { videoCell?.muteButton.isHidden = false } else { videoCell?.muteButton.isHidden = true } } } else if keyPath == "rate" { if avPlayer.rate > 0 { videoCell?.muteButton.isHidden = false } else { videoCell?.muteButton.isHidden = true } } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With