我正在尝试制作一个简短的 .mp4 视频作为启动屏幕,以便在启动应用程序时显示它。
有什么例子吗?
请参阅下面 DarkDust 在 在 iOS 应用程序中模拟启动视频中的答案。
我认为您的一个解决方案是显示启动画面(IMG),然后播放您喜欢的视频。
要快速播放视频,请使用 AV Foundation https://developer.apple.com/av-foundation/
您无法摆脱静态启动图像。虽然如图所示, 操作系统正在加载应用程序并实例化内容,直到它完成为止 准备好调用您的 UIApplicationDelegate。所以你所能做的就是 不使用启动画面(黑屏几秒钟)或制作您的电影 完全从显示的启动屏幕开始,因此它看起来像静态的 图像会突然动画。
要摆脱电影加载时的黑屏,您可以尝试 使播放器透明并在播放器后面有一个 UIImageView 显示启动图像。行为将是这样的:
显示启动画面(静态图像)。应用程序已加载。你看 UIImageView,也显示启动屏幕。在它的上面是 透明的电影播放器。电影播放器终于加载了动作并 开始播放它。至少从理论上来说,这应该会产生这样的效果 静态图像突然开始动画。
但是如果你根本不使用启动画面(很多游戏都会这样做), 那么电影播放器显示黑屏并不重要 一开始,你不会注意到。
关于在 UIImageView 中显示启动屏幕:不幸的是, 您必须测试界面旋转并手动加载图像, 无法查询显示的是哪个启动屏幕。如果你只 支持一种界面方向(同样,很多游戏都这样做) 当然没有这个问题。
您可以为“主界面”创建一个自定义ViewController,并在LaunchScreen之后使用它,并在里面使用AVPlayer。很快就会是这样的:
var player: AVPlayer?
override func viewDidLoad() {
super.viewDidLoad()
loadVideo()
}
private func loadVideo() {
//this line is important to prevent background music stop
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
} catch { }
let path = NSBundle.mainBundle().pathForResource("your path", ofType:"mp4")
player = AVPlayer(URL: NSURL(fileURLWithPath: path!))
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.frame
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
playerLayer.zPosition = -1
self.view.layer.addSublayer(playerLayer)
player?.seekToTime(kCMTimeZero)
player?.play()
}