AVPlayerLooper не зацикливает мое локальное видео - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь воспроизвести видео в моем проекте 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 в моей раскадровке, который я подключил к моему viewcontroller.

Он собирается и работает нормально, но когда я его запускаю, ничего не появляется.У меня просто черный экран.

Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 03 декабря 2018
  • AVPlayerLoop является своего рода объектом «верхнего уровня», который управляет как игроком, так и элементом игрока.Таким образом, вы должны сохранить его, например, в пользовательском свойстве контроллера представления, или он будет выпущен до того, как он действительно сможет что-либо сделать

  • Поскольку AVPlayerLoop управляет элементами в AVQueuePlayer,инициализировать игрока в очереди, не передавая элемент игрока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...