ios - 制作像回旋镖一样的视频循环效果

标签 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() {
        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
    }
}

但是倒放视频的时候,看起来不流畅,倒放不是从视频的最后一段开始的。任何想法如何解决这个问题? 我希望视频看起来像回旋镖应用程序循环中一样流畅

最佳答案

我建议使用图像而不是视频,因为您可以只创建一组图像,然后循环遍历它们以获得相同的效果,但更省力。

关于ios - 制作像回旋镖一样的视频循环效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45359634/

相关文章:

ios - 如何在 iOS 中解压缩文件并从中复制数据库?

ios - JavaScriptCore 除了 'hello, world' 之外不工作

ios - 了解没有应用程序调用的iOS线程转储

iphone - 您如何判断 UIPrintInteractionController 是否正在显示?

iphone - 如何引用 iPhone 中保存为 "object for key"的日期对可变数组进行排序?

iphone - 准备提交应用程序

xcode - 在 Swift 中,将 UITableView 编辑模式复选标记的位置从左侧更改为右侧

Swift 编译器错误组

iOS - 由于内存问题错误而终止

swift - Rx swift : how to build up the observable function call chain other than use callback?