     // MARK: - AVPlayerObservers
     
     internal func addPlayerObservers() {
+        self._timeObserver = self._avplayer.addPeriodicTimeObserver(forInterval: CMTimeMake(1,100), queue: DispatchQueue.main, using: { [weak self] timeInterval in
+            guard let strongSelf = self
+            else {
+                return
+            }
+            strongSelf.delegate?.playerCurrentTimeDidChange?(strongSelf)
+        })
         self._avplayer.addObserver(self, forKeyPath: PlayerRateKey, options: ([.new, .old]) , context: &PlayerObserverContext)
     }
     
     internal func removePlayerObservers() {
+        self._avplayer.removeTimeObserver(_timeObserver)
         self._avplayer.removeObserver(self, forKeyPath: PlayerRateKey, context: &PlayerObserverContext)
     }
     

    open override func viewDidLoad() {
        super.viewDidLoad()
        
        self._timeObserver = self._avplayer.addPeriodicTimeObserver(forInterval: CMTimeMake(1,100), queue: DispatchQueue.main, using: { [weak self] timeInterval in
            guard let strongSelf = self else { return }
            strongSelf.delegate?.playerCurrentTimeDidChange?(strongSelf)
        })
        self.addPlayerLayerObservers();
        self.addPlayerObservers();
        self.addApplicationObservers();


extension Player {
    
    // MARK: - AVPlayerLayerObservers
    
    internal func addPlayerLayerObservers() {
