AVPlayerLooper 不循环我的本地视频

Eri*_*ier 1 macos avfoundation ios swift avkit

我正在尝试让视频在我的 macOS 项目中播放,并且希望它不断循环。我能够让它播放一次,但我不知道如何让它循环播放。我正在使用 AVPlayerLooper 但似乎在某个地方搞砸了。这是我的代码:

import Cocoa
import AVKit
import AVFoundation

class ViewController: NSViewController {

    @IBOutlet weak var videoPlayer: AVPlayerView!

    override func viewDidLoad() {
        //var loop: AVPlayerLooper?

        super.viewDidLoad()

        guard let path = Bundle.main.path(forResource: "Background", ofType:"mp4") else {
            debugPrint("Not found")
            return
        }

        let asset = AVAsset(url: URL(fileURLWithPath: path))
        let item = AVPlayerItem(asset: asset)
        let queuePlayer = AVQueuePlayer(playerItem: item)
        let loop = AVPlayerLooper(player: queuePlayer, templateItem: item)
        videoPlayer.player = queuePlayer
        videoPlayer.player?.play()
    }
}
Run Code Online (Sandbox Code Playgroud)

我的故事板中还有一个 AVPlayerView,我已将其连接到我的视图控制器。

它构建并运行良好,但当我运行它时,什么也没有显示。我只是遇到黑屏。

任何帮助表示赞赏。谢谢!

NoH*_*its 6

  • AVPlayerLoop 是一种管理播放器和播放器项目的“顶级”对象。所以你必须保留它,例如在视图控制器的自定义属性中,否则它将在它真正可以做任何事情之前被释放

  • 由于AVPlayerLoop管理AVQueuePlayer中的项目,因此初始化队列播放器而不传入播放器项目