         player.pause()
     }
 
+    @objc private func playOrPause() {
+        if player.rate == 0 {
+            play()
+        } else {
+            pause()
+        }
+    }
+
     override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
         switch (object, keyPath) {
         case (is AVPlayer, _):
-            updatePlayButton()
+            let stopped = (player.rate == 0)
+            if stopped {
+                player.seekToTime(posterTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
+            }
             break
         default:
             super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)

        startTime = CMTimeSubtract(startTime, minFrameDuration)
        endTime = CMTimeSubtract(endTime, minFrameDuration)
        updateImages()
        updatePlayButton()
    }

    @objc private func endPlus() {

        self.playerView.player = self.player

        self.player.addObserver(self, forKeyPath: "rate", options: [], context: nil)
        play()
    }

