ios - 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 已连接到我的视图控制器。
它构建并运行良好,但是当我运行它时,什么也没有出现。我只是得到一个黑屏。
任何帮助表示赞赏。谢谢!
解决方案
AVPlayerLoop 是一种管理播放器和播放器项目的“顶级”对象。所以你必须保留它,例如在视图控制器的自定义属性中,否则它会在它真正做任何事情之前被释放
由于 AVPlayerLoop 管理 AVQueuePlayer 中的项目,所以初始化队列播放器而不传入播放器项目
推荐阅读
- python - 使用字典理解将文件中的键、值解析为字典
- sql-server - 加入不成功时显示0
- docker - 如何在不杀死原始 pod 的情况下更改 k8s 的 pod 限制?
- powershell - 我可以重复使用 Powershell 验证块中定义的变量吗?
- python - Kivy界面退出延迟,win10不流畅
- sql - 为什么我用 Sum() 和 GroupBy 得到多行
- javascript - 如何更改矩阵中的单个元素?
- laravel - Laravel WhereIn 作为 AND 而不是 OR
- sql - 在 SQL 中计算销售利润的百分比
- delphi - IdTcpClient 只接收一次 Windows 服务