//Reactive를 확장시켜준다.
//단, 확장의 범위를 제한시켜주는 것이 좋다.
extension Reactive where Base: AVPlayer {
    var currentStatus: Observable<AVPlayer.Status> {
		    // KVO(Key-Value Observing)를 사용하여, AVPlayer.Status의 변화가 발생하면 이벤트 방출
        return observe(AVPlayer.Status.self, #keyPath(AVPlayer.status))
            .map { $0 ?? .unknown }
            .distinctUntilChanged()
    }
}
func addPlayerObserver() {
        let interval = CMTime(value: 1, timescale: 10)
        if timeObserverToken == nil {
            timeObserverToken = player.addPeriodicTimeObserver(forInterval: interval, queue: .main, using: { [weak self] _ in
                guard let owner = self else { return }
                let status = owner.fetchStatus()
                owner.isReady.onNext(status)
            })
        }
    }
    
    func removePlayerObserver() {
        if let token = timeObserverToken {
            player.removeTimeObserver(token)
            timeObserverToken = nil
        }
    }