Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 制作像回飞棒一样的视频循环效果_Ios_Iphone_Swift_Xcode_Swift3 - Fatal编程技术网

Ios 制作像回飞棒一样的视频循环效果

Ios 制作像回飞棒一样的视频循环效果,ios,iphone,swift,xcode,swift3,Ios,Iphone,Swift,Xcode,Swift3,我正在尝试从mp4文件制作一个视频循环。就像instagram应用程序中的回力棒一样,我有以下代码 class ViewController: UIViewController { var avPlayer: AVPlayer! var avPlayerLayer: AVPlayerLayer! var paused: Bool = false var reverse: Bool = true override func viewDidLoad() {

我正在尝试从mp4文件制作一个视频循环。就像instagram应用程序中的回力棒一样,我有以下代码

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
    }
}
但是当视频倒转时,它看起来并不平滑,倒转也不会从视频的最后一部分开始。有什么办法解决这个问题吗?
我希望视频看起来像回力棒应用程序循环中一样平滑

我建议使用图像而不是视频,因为你可以创建一组图像,然后循环使用它们以获得相同的效果,但是,我们需要更少的努力。

我们如何处理图像呢?同样的事情就是获取一组图像,并对它们进行迭代,然后添加一个动画,这样你就不会在一瞬间将它们全部浏览一遍。