Swift / Firebase - скачайте mp4 перед игрой - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу воспроизвести мой файл mp4 (хранящийся в хранилище Firebase) и запускаю таймер, когда он начинает играть. Моя проблема в том, что таймер запускается до отображения видео на моем экране. Кто-нибудь знает, как запустить время сразу после воспроизведения видео?

Вот мой код, спасибо!

мой вар

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
                                    }
                                }
                            })

1 Ответ

0 голосов
/ 01 ноября 2018

Попробуйте это:

    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 )
                        }

                        })
...