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

let player: AVPlayer = AVPlayer(playerItem: somePlayerItem)

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

有没有人知道在原始 AVPlayerItem 的引用被破坏后将这个 AVPlayer 重新分配给不同的 AVPlayer 的方法?我知道我可以使用 URL 创建一个新的 AVPlayerItem 但我想知道我是否可以保留相同的对象。

最佳答案

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

因此,创建您的 Assets 一次:

let asset=AVAsset(URL: your_url)

然后在需要时通过创建一个新项目来重用它:
let item=AVPlayerItem(asset: asset)
let player=AVPlayer(playerItem: item)

关于ios - 将 AVPlayerItem 与 Swift 中的新 AVPlayer 关联?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33536580/

10-10 21:08