首页 > 解决方案 > AVPlayerLooper 没有循环播放我的本地视频

问题描述

我正在尝试在我的 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()
    }
}

我的情节提要中还有一个 AVPlayerView 已连接到我的视图控制器。

它构建并运行良好,但是当我运行它时,什么也没有出现。我只是得到一个黑屏。

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

标签: iosswiftmacosavfoundationavkit

解决方案


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

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


推荐阅读