ios – 每次重复使用相同的AVPlayer和AVPlayerLayer或创建新的?

如果你需要在同一个视图中播放多个视频,似乎有两种方法:(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,还是被认为是浪费?

解决方法

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

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

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...