Swift/Firebase-在播放之前先下载一个mp4



我想播放我的mp4文件(存储在firebase存储中(,并在开始播放时启动计时器。我的问题是,计时器在视频显示在我的屏幕上之前启动。有人知道如何在视频播放后开始时间吗?

这是我的密码,谢谢!

我的var

var avPlayer:AVPlayer!
var player:AVPlayer?
var moviePalyer: AVPlayerLayer?
var isdone = true
var previewlayer: AVCaptureVideoPreviewLayer?
var timer = Timer()

我的代码:

let url = URL(string:movieURL)
let avPlayer = AVPlayer.init(url: url!)
moviePalyer = AVPlayerLayer.init(player: avPlayer)
moviePalyer?.frame = imageView.bounds
moviePalyer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
previewlayer?.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
imageView.layer.addSublayer(moviePalyer!)
avPlayer.play()
self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(MyViewController.decreaseTimer), userInfo: nil, repeats: true)
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: avPlayer.currentItem, queue: nil, using: { (_) in
DispatchQueue.main.async {
if self.isdone == true{
avPlayer.seek(to: kCMTimeZero)
avPlayer.play()
}else {
avPlayer.pause()
self.isdone = false
}
}
})

试试这个:

NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: avPlayer.currentItem, queue: nil, using: { (_) in
DispatchQueue.main.async {
if self.isdone == true{
avPlayer.seek(to: kCMTimeZero)
avPlayer.play()
}else {
avPlayer.pause()
self.isdone = false
}

}
DispatchQueue.main.async {
self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(MyViewController.decreaseTimer), userInfo: nil, repeats: true )
}
})

相关内容

最新更新