如果您需要在同一 View 中播放多个视频,则看似有两种方法:(1)每次创建新的AVPlayerLayers和AVPlayers;或(2)重用相同的内容。

假设您的类(class)旨在播放多个视频,并且以下代码用于加载新视频:

    var player = AVPlayer()
    var playerItem:AVPlayerItem?
    var playerLayer:AVPlayerLayer?

    // Get file path to <videoURL>
    videoURL = getFilePath(videoURL)

    // Create player & layer
    playerItem = AVPlayerItem(URL: NSURL(fileURLWithPath: videoURL))
    player = AVPlayer(playerItem: playerItem!)
    playerLayer = AVPlayerLayer(player: player)

创建AVPlayerLayer和AVPlayer之后,第二个选项是重用它们。因此,您可以将以下两行替换为:
    player.replaceCurrentItemWithPlayerItem(playerItem!)

每个选项的优点/缺点是什么?使用选项1可以吗,还是认为那是浪费的?

最佳答案

如果您尝试同时播放多个视频,则需要使用相应的AVPlayerLayers创建多个AVPlayers。

但是,如果您通过轻击手势或轻扫手势在多个视频之间切换,则可以回收两个AVPlayer。一个用于播放当前视频,另一个用于预载下一个视频。

另外,您也可以只使用一个AVQueuePlayer和一个AVPlayerLayer并将您的项目排队。 AVQueuePlayer自动预加载列表中的下一项。

07-26 09:37