How to detect when AVPlayer video ends playing?

前端 未结 10 955
感动是毒
感动是毒 2020-11-28 07:48

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

10条回答
  •  青春惊慌失措
    2020-11-28 08:13

    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)
    

提交回复
热议问题