How to detect when AVPlayer video ends playing?

前端 未结 10 921
感动是毒
感动是毒 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:12

    Swift 4.2 Version:

    var player: AVPlayer!
      //
      //
    // Configure Player
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    
        let filepath: String? = Bundle.main.path(forResource: "selectedFileName", ofType: "mp4")
        if let filepath = filepath {
            let fileURL = URL.init(fileURLWithPath: filepath)
            player = AVPlayer(url: fileURL)
            let playerLayer = AVPlayerLayer(player: player)
            // Register for notification
            NotificationCenter.default.addObserver(self,
                                                   selector: #selector(playerItemDidReachEnd),
                                                             name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
                                                             object: nil) // Add observer
    
            playerLayer.frame = self.view.bounds
            self.view.layer.addSublayer(playerLayer)
            player.play()
        }
    }
    // Notification Handling
    @objc func playerItemDidReachEnd(notification: NSNotification) {
        player.seek(to: CMTime.zero)
        player.play()
    }
    // Remove Observer
    deinit {
        NotificationCenter.default.removeObserver(self)
    }
    

提交回复
热议问题