Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to detect when AVPlayer video ends playing?

I'am using AVPlayer for playing local video file (mp4) in Swift. Does anyone know how to detect when video finish with playing? Thanks

like image 216
Nik Avatar asked Apr 01 '15 08:04

Nik


1 Answers

To get the AVPlayerItemDidPlayToEndTimeNotification your object needs to be an AVPlayerItem.

To do so, just use the .currentItem property on your AVPlayer

Now you will get a notification once the video ends!

See my example:

let videoPlayer = AVPlayer(URL: url)         NSNotificationCenter.defaultCenter().addObserver(self, selector: "playerDidFinishPlaying:",         name: AVPlayerItemDidPlayToEndTimeNotification, object: videoPlayer.currentItem)  func playerDidFinishPlaying(note: NSNotification) {     print("Video Finished") } 

Swift 3

let videoPlayer = AVPlayer(URL: url)         NotificationCenter.default.addObserver(self, selector: Selector(("playerDidFinishPlaying:")),         name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: videoPlayer.currentItem)  func playerDidFinishPlaying(note: NSNotification) {     print("Video Finished") } 

Don't forget to remove the Observer in your deinit

Swift 4, 5

NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: nil) 
like image 143
jstn Avatar answered Sep 30 '22 05:09

jstn