我有一个AVPlayer,我正在分配给另一个AVPlayer,但我希望它们彼此独立。例如:如果我创建一个这样的AVPlayer:
var player1:AVPlayer = AVPlayer(URL: url)
然后我用相同的视频创建另一个AVPlayer
var player2:AVPlayer = player1
然后说如果我打电话:
player2.play()
如何才能让玩家2玩而不玩玩家1? (注意:出于性能,速度和其他原因,我不想通过使用相同的URL初始化来创建一个全新的AVPlayer。任何帮助将不胜感激:)
答案 0 :(得分:1)
通过引用复制类,通过值复制struct。
由于您使用的课程是第三方,因此您唯一的选择是创建该课程的另一个实例。
所以你的代码应该是这样的:
var player1 = AVPlayer(URL: url)
var player2 = AVPlayer(URL: url)
两个玩家彼此独立,但网址相同。
注意:在这种情况下,您不需要指定数据类型,因为它是从您分配给它的值中假设的。这样做是多余的,如果你不这样做会更好。
答案 1 :(得分:0)
我最终制作了第一个player.currentItem
的副本并使用播放器项初始化了一个新的AVPlayer:
let player1 = AVPlayer(URL: url)
someItem = player1.currentItem.copy()
let player2 = AVPlayer(playerItem: someItem)
在我的情况下它的工作速度要快得多,为什么如果你已经拥有它,可以从网址中检索相同的视频!