Переход не происходит сразу с AVPlayerViewController

Я делаю приложение для tvOS. Я создаю простой переход SHOW. В контроллере представления назначения я хочу воспроизвести удаленное видео с помощью AVPlayerViewController, но когда я нажимаю кнопку, чтобы сделать переход, это не происходит немедленно. На самом деле он ждет почти 2-3 секунды, а затем переходит к целевому контроллеру представления, где видео запускается почти сразу. Я думаю, что переход происходит не сразу, потому что AVPlayer загружает видео. Я не хочу такого поведения, я хочу сделать переход немедленно, а затем может быть показан индикатор активности (вращающийся вид) в целевом контроллере представления.

Вот мой код для целевого контроллера представления.

import Foundation
import UIKit
import AVKit


class PlayViewController : UIViewController {


    var avplayerVC : AVPlayerViewController?
    var videoUrlStr : String?


    override func viewDidLoad() {
        super.viewDidLoad()

        print("In PlayViewController View Did Load")

        avplayerVC = AVPlayerViewController()

        let avAsset = AVAsset(URL: NSURL.init(string: videoUrlStr!)!)
        let avPlayerItem = AVPlayerItem(asset: avAsset)
        avplayerVC?.player = AVPlayer(playerItem: avPlayerItem)

        avplayerVC?.player?.seekToTime(kCMTimeZero)
        avplayerVC?.player?.play()
        avplayerVC?.view.frame = (self.view?.frame)!
        self.view.addSubview((avplayerVC?.view!)!)

    }



    override func viewDidDisappear(animated: Bool) {
        super.viewDidDisappear(animated)
        avplayerVC?.view.removeFromSuperview()
    }


    // MARK : AVPlayerViewControllerDelegate


}

Может ли кто-нибудь помочь мне в достижении такого поведения? Спасибо


person Madu    schedule 10.11.2015    source источник


Ответы (1)


Взгляните на asset.loadValuesAsynchronouslyForKeys(keys: [String], completionHandler:) Этот метод даст вам возможность выполнить часть загрузки, а затем настроить проигрыватель в обработчике завершения. Вы можете передать этому методу любые ключи, но некоторые из них, которые вы можете рассмотреть, — это продолжительность, дорожки и играбельность.

Единственное другое предостережение, о котором я могу подумать, это то, что после того, как вы загрузите эти значения, вам нужно будет отправить взаимодействие с вашим игроком в основной поток.

person Jonathan    schedule 13.01.2016