                     self.playerDelegate?.playerReady(self)
                 }
             }
+
+        } else if context == &PlayerObserverContext {
+            if keyPath == PlayerTimeControlStatusKey {
+                if let rawNewValue = change?[.newKey] as? Int, let newStatus = AVPlayerTimeControlStatus(rawValue: rawNewValue) {
+                    if newStatus == .paused {
+                        self.playbackState = .paused
+                    } else if newStatus == .playing {
+                        self.playbackState = .playing
+                    }
+                }
+            }
         }
 
     }

            self._avplayer.removeTimeObserver(observer)
        }
        self._avplayer.removeObserver(self, forKeyPath: PlayerRateKey, context: &PlayerObserverContext)
    }

    // MARK: -

private let PlayerPlayableKey = "playable"
private let PlayerDurationKey = "duration"
private let PlayerRateKey = "rate"
private let PlayerTimeControlStatusKey = "timeControlStatus"

// KVO player item keys

