如何在 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/