将 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)
如何将 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)