swift - AVPlayer,视频结束后黑屏
问题描述
视频结束后我有黑屏,但我想在视频结束后重定向到另一个故事板。
有人可以帮我解决这个问题。
谢谢
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
playVideo()
}
private func playVideo() {
guard let path = Bundle.main.path(forResource: "Kristinka", ofType:"m4v") else {
debugPrint("video.m4v not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
let playerController = AVPlayerViewController()
playerController.showsPlaybackControls = false
playerController.player = player
present(playerController, animated: true) {
player.play()
}
}
}
解决方案
您需要检测您正在播放的项目何时结束。为此,您可以添加一个观察者。例如:
func finishedVideo(_ notification: NSNotification) {
print("Animation did finish")
}
private func playVideo() {
guard let path = Bundle.main.path(forResource: "Kristinka", ofType:"m4v") else {
debugPrint("video.m4v not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
let playerController = AVPlayerViewController()
playerController.showsPlaybackControls = false
playerController.player = player
present(playerController, animated: true) {
NotificationCenter.default.addObserver(self,
selector: #selector(finishedVideo(_:)),
name: .AVPlayerItemDidPlayToEndTime,
object: player?.currentItem)
player.play()
}
}
我在这个非常相关的问题上挖掘了这段代码。如果您进行搜索,会有很多相关/重复的答案。
推荐阅读
- asp.net-core - .net 5.0 hotchocolate graphql 服务器版本 11 模式拼接在哪里?
- spring - 如何在 Spring Boot 中应用基于 URL 和角色的身份验证?
- capacitor - 空对象引用上的“void com.getcapacitor.Bridge.onStart()”
- coldfusion - ColdFusion 2021 升级,代码库位于 D 盘,CF 服务器位于 C 盘
- python - 根据不同的标准估算缺失的年龄
- c++ - 在 C++ 中,如何为类定义 ***.h?
- woocommerce - WooCommerce 产品变化自定义字段及其价格计算
- r - 在 R tidyverse 中删除重复项时保留最后一次观察
- sql-server - 如何从两个不同的表中选择数据并计算行数
- python - PolynomialFeatures 和 LinearRegression 返回不需要的系数