首页 文章

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

提问于
浏览
4

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

let player: AVPlayer = AVPlayer(playerItem: somePlayerItem)

我不知道在这个声明中会发生什么,但是某个地方被设置为允许somePlayerItem知道它有一个关联的玩家 . 这是否有一些观察者设置在哪里或属性集会注意到这一点?

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

1 回答

  • 4

    You can't reuse an item, but you can reuse an asset.

    因此,创建一次您的资产:

    let asset=AVAsset(URL: your_url)
    

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

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

相关问题