如何使用 Swift 檢測 AVPlayer 影片播放結束?
要檢測 Swift 中影片的結束,我們需要建立一個影片播放器,然後使用通知來檢測影片何時停止播放。我們將透過 Swift 中的一個示例來演示這一點。
讓我們建立一個專案,並將任何副檔名為“mp4”的影片拖放到專案中,如果需要,選擇複製資源並新增到專案的 Target。
現在,我們將以程式設計方式首先建立一個影片播放器,然後建立專案中影片的 URL,然後播放影片。
var videoPlayer: AVPlayer!
現在,在 viewDidAppear 中新增以下程式碼。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let filepath: String? = Bundle.main.path(forResource: "Introduction", ofType: "mp4")
if let videoPath = filepath {
let url = URL.init(fileURLWithPath: videoPath)
videoPlayer = AVPlayer(url: url)
let playerLayer = AVPlayerLayer(player: videoPlayer)
playerLayer.frame = self.view.bounds
self.view.layer.addSublayer(playerLayer)
videoPlayer.play()
}
}以上程式碼將建立一個影片播放器,並將其作為子層新增到檢視控制器中預設檢視。
現在我們需要為播放器新增一個觀察者,並建立一個當檢測到影片結束時應呼叫的觀察者方法。將下面的程式碼塊新增到 viewDidAppear 方法中。
NotificationCenter.default.addObserver(self, selector: #selector(videoDidEnd), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
現在我們還需要編寫 videoDidEnd 方法,在這個方法中,您可以執行任何您想要的動作,現在,當影片結束並且通知中心呼叫此方法時,我們只打印“video ended”。
@objc func videoDidEnd(notification: NSNotification) {
print("video ended")
}當我們執行此程式碼時,我們將獲得以下結果。

影片停止播放後,我們在控制檯中得到輸出。

現在,以上程式碼為我們完成了所需的操作,但為了提高記憶體使用效率,我們還需要移除觀察者,這可以透過以下程式碼完成。
deinit {
NotificationCenter.default.removeObserver(self)
}
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP