9

如果需要在同一个视图中播放多个视频,貌似有两种做法:(1)每次新建AVPlayerLayers和AVPlayers;或(2)重复使用相同的。

假设您的课程旨在播放多个视频,并且使用以下代码加载新视频:

    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,还是认为这很浪费?

4

1 回答 1

2

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

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

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

于 2018-09-28T19:09:39.903 回答