Увеличивает ли установка AVPlayerItem после создания AVPlayer эффективность в iOS 13? - PullRequest
0 голосов
/ 20 июня 2020

В видеоролике 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)
...