В видеоролике WWD C 2016 Apple говорит создать AVPlayer без AVPlayerItem, создать AVPlayerLayer, а затем назначить AVPlayerItem для AVPlayer.
Я получил вышеуказанное код из книги @ matt's Programming iOS 10 . В нем он говорит:
Очевидно, есть какая-то эффективность, если вы будете делать что-то в этом порядке. Причина, как выясняется, в том, что когда AVPlayerItem назначается AVPlayer, у которого нет и ассоциированного AVPlayerLayer, AVPlayer предполагает, что важна только звуковая дорожка AVAssest, а затем, когда назначается AVPlayerLayer, он должен также скремблировать, чтобы захватить и видеодорожки
Даже если это было iOS 10, эта эффективность по-прежнему соответствует iOS 13?
делайте так:
let asset = AVAsset(url: url)
let item = AVPlayerItem(asset: asset)
let player = AVPlayer()
let layer = AVPlayerLayer(player: player)
player.replaceCurrentItem(with: item) // playerItem set here
не делайте так:
let asset = AVAsset(url: url)
let item = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: item) // playerItem set here
let layer = AVPlayerLayer(player: player)