2017-07-27 3 views
1

Ich versuche, eine Videoschleife aus einer mp4-Datei zu machen. Wie im Bumerang von instagram App habe ich diesen CodeMachen Sie einen Video-Loop-Effekt wie Bumerang

class ViewController: UIViewController { 

    var avPlayer: AVPlayer! 
    var avPlayerLayer: AVPlayerLayer! 
    var paused: Bool = false 
    var reverse: Bool = true 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let theURL = Bundle.main.url(forResource:"vidio", withExtension: "mp4") 

     avPlayer = AVPlayer(url: theURL!) 
     avPlayerLayer = AVPlayerLayer(player: avPlayer) 
     avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
     avPlayer.volume = 0 
     avPlayer.actionAtItemEnd = .none 

     avPlayerLayer.frame = view.layer.bounds 
     view.backgroundColor = .clear 
     view.layer.insertSublayer(avPlayerLayer, at: 0) 

     NotificationCenter.default.addObserver(self, 
               selector: #selector(playerItemDidReachEnd(notification:)), 
               name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, 
               object: avPlayer.currentItem) 
    } 

    func playerItemDidReachEnd(notification: Notification) { 

     guard reverse else { 
      avPlayer.seek(to: kCMTimeZero) 
      avPlayer.rate = 1.0 
      reverse = true 
      print("normal") 
      return 
     } 

     print("reversa") 

     avPlayer.seek(to: avPlayer.currentItem!.duration, 
        toleranceBefore: kCMTimeZero, 
        toleranceAfter: kCMTimeZero) 
     avPlayer.rate = -1.0 

     reverse = false 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     avPlayer.play() 
     paused = false 
    } 

    override func viewDidDisappear(_ animated: Bool) { 
     super.viewDidDisappear(animated) 
     avPlayer.pause() 
     paused = true 
    } 
} 

Aber wenn das Video umgekehrt, es doesn ‚t glatt aussehen und umgekehrt doesn‘ t aus dem letzten Teil des Videos starten. Irgendwelche Ideen, wie man das löst? Ich möchte das Video glatt aussehen wie in der Bumerang App Schleife

Antwort

0

Ich würde vorschlagen, Bilder und nicht Video, weil Sie einfach ein Array von Bildern erstellen und dann für den gleichen Effekt durch sie durchlaufen, aber mit weniger Mühe.

+0

Wie würden wir es mit Bildern machen? – Mamta

+0

gleiche Sache nur ein Array von Bildern und durchlaufen Sie sie und fügen Sie eine Animation, so dass Sie nicht alle in einem Bruchteil einer Sekunde durchlaufen. –