2015-06-27 40 views
3

我有AVPlayer從url加載視頻,並把播放器AVPlayerViewController內,但我不想緩衝和下載視頻,直到用戶按播放按鈕。我應該怎麼做?AVPlayerViewController與來自NSURL的AVPlayer

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

回答

2

AVPlayerViewController與NSURL的AVPlayer?

您需要設置視頻資產並使用該基於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