                 let currentTime = CMTimeGetSeconds(self.player!.currentTime())
                 let totalTime   = TimeInterval(playerItem.duration.value) / TimeInterval(playerItem.duration.timescale)
                 weak var _self = self
-                delegate?.bmPlayer(player: _self, playTimeDidChange: currentTime, totalTime: totalTime)
+                delegate?.bmPlayer(player: _self!, playTimeDidChange: currentTime, totalTime: totalTime)
             }
             updateStatus(inclodeLoading: true)
         }

        didSet {
            if state != oldValue {
              weak var _self = self
              delegate?.bmPlayer(player: _self, playerStateDidChange: state)
            }
        }
    }

                        let duration        = item.duration
                        let totalDuration   = CMTimeGetSeconds(duration)
                        weak var _self = self
                        delegate?.bmPlayer(player: _self!, loadedTimeDidChange: timeInterVarl, totalDuration: totalDuration)
                    }
                    
                case "playbackBufferEmpty":
