簡體   English   中英

來自NSURL的AVPlayer的AVPlayerViewController

[英]AVPlayerViewController with AVPlayer from NSURL

我有AVPlayer從URL加載視頻並將播放器放入AVPlayerViewController但我不想緩沖和下載視頻,直到用戶按下播放按鈕。 我該怎么辦?

var player: AVPlayer = AVPlayer(URL: nsurl)
var newVideoChunk: AVPlayerViewController = AVPlayerViewController()
                                newVideoChunk.player = player

來自NSURL的AVPlayer AVPlayerViewController?

您需要設置視頻資源並使用基於NSURL的資產創建playerItem。 然后你需要向該playerItem添加一個觀察者(立即):

self.playerItem?.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.New, context: Constants.AVPlayerStatusObservationContext)

在鍵值觀察器例程中,您可以捕獲上下文並調用外部函數:

   override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    //
    if context == Constants.AVPlayerStatusObservationContext {
        if (keyPath! == "status") {
            if (player!.status == AVPlayerStatus.ReadyToPlay) {
                print("ready")
                readyToPlay()

            } else if (player!.status == AVPlayerStatus.Failed) {
                // something went wrong. player.error should contain some information
            } else if (player!.status == AVPlayerStatus.Unknown) {
                print("unknown")
            }
        }
    }
}

如果您只想在單擊按鈕時處理緩沖和下載,請確保僅在按鈕操作方法中添加觀察者。 這與將文件URL作為在線URL一樣有效。

請查看我的示例要點以獲取更多信息:

VideoPlayerViewController.swift

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM