将 AVPlayerItem 与 Swift 中的新 AVPlayer 相关联?

Associate AVPlayerItem with new AVPlayer in Swift?

如何将 AVPlayerItem 的实例与 Swift 中的新 AVPlayer 重新关联?在初始化程序中使用时。每次我尝试将 AVPlayerItem 重新分配给不同的 AVPlayer 时,即使我已将对 AVPlayer 的所有引用设置为 nil (因此它应该被垃圾收集),它抱怨不能将 AVPlayerItem 分配给超过 1 个 AVPlayer 对象。我了解一些绕过它的方法,但我想知道为什么 这种 方法不起作用。

let player: AVPlayer = AVPlayer(playerItem: somePlayerItem)

我不知道在此声明期间发生了什么,但某处设置了一些东西以允许 somePlayerItem 知道它有一个关联的玩家。这是否在某处设置了一些观察者或 属性 设置会注意到这一点?

有人知道在原始 AVPlayer 的引用被销毁后将此 AVPlayerItem 重新分配给另一个 AVPlayer 的方法吗?我知道我可以使用 URL 制作一个新的 AVPlayerItem 但我想知道我是否可以保留相同的对象。

您不能重复使用项目,但可以重复使用资产。

所以创建一次你的资产:

let asset=AVAsset(URL: your_url)

然后通过创建新项目在需要时重复使用它:

let item=AVPlayerItem(asset: asset)
let player=AVPlayer(playerItem: item)